将两个数字转换成单词
Converting two number digit into words
我用 C++ 编写了一个程序来将数字转换为单词。 0-19 的输出很好,但它给出了 20-99 之间数字的错误输出。
//This program converts numbers from 0-99 into words
#include<iostream>
using namespace std;
int main()
{
int number,unit,ten;
cout<<"Please enter any number between 0-99: ";
cin >>number;
ten=number/10;
unit=number%10;
if(number<0 | number>99)
cout<<"Number is out of range";
if(number>=11 & number <=19)
{
if(number==11) cout<<"eleven";
if(number==12) cout<<"twelve";
if(number==13) cout<<"thirteen";
if(number==14) cout<<"fourteen";
if(number==15) cout<<"fifteen";
if(number==16) cout<<"sixteen";
if(number==17) cout<<"seventeen";
if(number==18) cout<<"eighteen";
if(number==19) cout<<"ninteen";
}
else
{
if(unit==0) cout<<"zero";
if(unit==1) cout<<"one";
if(unit==2) cout<<"two";
if(unit==3) cout<<"three";
if(unit==4) cout<<"four";
if(unit==5) cout<<"five";
if(unit==6) cout<<"six";
if(unit==7) cout<<"seven";
if(unit==8) cout<<"eight";
if(unit==9) cout<<"nine";
if(ten==10) cout<<"Ten";
if(ten==20) cout<<"twenty";
if(ten==30) cout<<"thirty";
if(ten==40) cout<<"fourty";
if(ten==50) cout<<"fifty";
if(ten==60) cout<<"sixty";
if(ten==70) cout<<"seventy";
if(ten==80) cout<<"eighty";
if(ten==90) cout<<"ninty";
}
}
输出:
Please enter any number between 0-99: 25
five
实际上,您的程序运行正常。对于输入 25
它应该给出 5,因为您正在从您自己的代码中执行 unit = number%10
其中 returns 5
和 if(unit==5) cout<<"five";
。
如果您想在 return 中获得 twenty five
,您应该更改代码。
不是直接匹配,而是将数字存储在地图中并检查它的值。另一种方法是将它们存储在 2 个不同的列表中,例如:d1 = ['zero','one' ...]
和 d10 = ['ten', 'twenty', 'thirty', ...]
。这样,您就不会重复任何事情。此外,您可以检查输入的长度并知道它是一个十进制数还是两个十进制数,如果是 2 个十进制数,您可以用 number/10
得到第一个,用 number%10
得到第二个,然后连接结果.
以 25
为例,您将在 d10
列表中搜索 2
并在 d1
列表中搜索 5
,最后,您会得到 'twenty' + 'five'
n1 = number/10
n2 = number%10
for i in d10:
if i == n1:
for j in d1:
if j == n2:
print(i+' ' +j)
else:
break
else:
break
注意:代码在python 3.x
只有两个地方你需要做一些小的改动,你会得到你想要的结果
首先,当您将十部分分开时,将其乘以 10,然后在 10 的倍数的 if 条件中检查 10 的倍数,即 10、20、..
然后你只需要将所有十位比较的位置更改为高于所有其他数字比较的位置
我复制了你的代码并做了修改,
我在下面评论了您需要更改的地方
//This program converts numbers from 0-99 into words
#include<iostream>
using namespace std;
int main()
{
int number,unit,ten;
cout<<"Please enter any number between 0-99: ";
cin >>number;
ten=number/10;
unit=number%10;
ten=ten*10;// multiply again it make it power of 10 so that you can check for if for multiple of 10
if(number<0 | number>99)
cout<<"Number is out of range";
if(number>=11 & number <=19)
{
if(number==11) cout<<"eleven";
if(number==12) cout<<"twelve";
if(number==13) cout<<"thirteen";
if(number==14) cout<<"fourteen";
if(number==15) cout<<"fifteen";
if(number==16) cout<<"sixteen";
if(number==17) cout<<"seventeen";
if(number==18) cout<<"eighteen";
if(number==19) cout<<"ninteen";
}
else
{
if(ten==10) cout<<"Ten";
if(ten==20) cout<<"twenty";
if(ten==30) cout<<"thirty";
if(ten==40) cout<<"fourty";
if(ten==50) cout<<"fifty";
if(ten==60) cout<<"sixty";
if(ten==70) cout<<"seventy";
if(ten==80) cout<<"eighty";
if(ten==90) cout<<"ninty";
//all ten position comparisons has been shifted before all one's position comparisons
if(unit==0) cout<<"zero";
if(unit==1) cout<<"one";
if(unit==2) cout<<"two";
if(unit==3) cout<<"three";
if(unit==4) cout<<"four";
if(unit==5) cout<<"five";
if(unit==6) cout<<"six";
if(unit==7) cout<<"seven";
if(unit==8) cout<<"eight";
if(unit==9) cout<<"nine"; }
}
我用 C++ 编写了一个程序来将数字转换为单词。 0-19 的输出很好,但它给出了 20-99 之间数字的错误输出。
//This program converts numbers from 0-99 into words
#include<iostream>
using namespace std;
int main()
{
int number,unit,ten;
cout<<"Please enter any number between 0-99: ";
cin >>number;
ten=number/10;
unit=number%10;
if(number<0 | number>99)
cout<<"Number is out of range";
if(number>=11 & number <=19)
{
if(number==11) cout<<"eleven";
if(number==12) cout<<"twelve";
if(number==13) cout<<"thirteen";
if(number==14) cout<<"fourteen";
if(number==15) cout<<"fifteen";
if(number==16) cout<<"sixteen";
if(number==17) cout<<"seventeen";
if(number==18) cout<<"eighteen";
if(number==19) cout<<"ninteen";
}
else
{
if(unit==0) cout<<"zero";
if(unit==1) cout<<"one";
if(unit==2) cout<<"two";
if(unit==3) cout<<"three";
if(unit==4) cout<<"four";
if(unit==5) cout<<"five";
if(unit==6) cout<<"six";
if(unit==7) cout<<"seven";
if(unit==8) cout<<"eight";
if(unit==9) cout<<"nine";
if(ten==10) cout<<"Ten";
if(ten==20) cout<<"twenty";
if(ten==30) cout<<"thirty";
if(ten==40) cout<<"fourty";
if(ten==50) cout<<"fifty";
if(ten==60) cout<<"sixty";
if(ten==70) cout<<"seventy";
if(ten==80) cout<<"eighty";
if(ten==90) cout<<"ninty";
}
}
输出:
Please enter any number between 0-99: 25
five
实际上,您的程序运行正常。对于输入 25
它应该给出 5,因为您正在从您自己的代码中执行 unit = number%10
其中 returns 5
和 if(unit==5) cout<<"five";
。
如果您想在 return 中获得 twenty five
,您应该更改代码。
不是直接匹配,而是将数字存储在地图中并检查它的值。另一种方法是将它们存储在 2 个不同的列表中,例如:d1 = ['zero','one' ...]
和 d10 = ['ten', 'twenty', 'thirty', ...]
。这样,您就不会重复任何事情。此外,您可以检查输入的长度并知道它是一个十进制数还是两个十进制数,如果是 2 个十进制数,您可以用 number/10
得到第一个,用 number%10
得到第二个,然后连接结果.
以 25
为例,您将在 d10
列表中搜索 2
并在 d1
列表中搜索 5
,最后,您会得到 'twenty' + 'five'
n1 = number/10
n2 = number%10
for i in d10:
if i == n1:
for j in d1:
if j == n2:
print(i+' ' +j)
else:
break
else:
break
注意:代码在python 3.x
只有两个地方你需要做一些小的改动,你会得到你想要的结果
首先,当您将十部分分开时,将其乘以 10,然后在 10 的倍数的 if 条件中检查 10 的倍数,即 10、20、.. 然后你只需要将所有十位比较的位置更改为高于所有其他数字比较的位置
我复制了你的代码并做了修改, 我在下面评论了您需要更改的地方
//This program converts numbers from 0-99 into words
#include<iostream>
using namespace std;
int main()
{
int number,unit,ten;
cout<<"Please enter any number between 0-99: ";
cin >>number;
ten=number/10;
unit=number%10;
ten=ten*10;// multiply again it make it power of 10 so that you can check for if for multiple of 10
if(number<0 | number>99)
cout<<"Number is out of range";
if(number>=11 & number <=19)
{
if(number==11) cout<<"eleven";
if(number==12) cout<<"twelve";
if(number==13) cout<<"thirteen";
if(number==14) cout<<"fourteen";
if(number==15) cout<<"fifteen";
if(number==16) cout<<"sixteen";
if(number==17) cout<<"seventeen";
if(number==18) cout<<"eighteen";
if(number==19) cout<<"ninteen";
}
else
{
if(ten==10) cout<<"Ten";
if(ten==20) cout<<"twenty";
if(ten==30) cout<<"thirty";
if(ten==40) cout<<"fourty";
if(ten==50) cout<<"fifty";
if(ten==60) cout<<"sixty";
if(ten==70) cout<<"seventy";
if(ten==80) cout<<"eighty";
if(ten==90) cout<<"ninty";
//all ten position comparisons has been shifted before all one's position comparisons
if(unit==0) cout<<"zero";
if(unit==1) cout<<"one";
if(unit==2) cout<<"two";
if(unit==3) cout<<"three";
if(unit==4) cout<<"four";
if(unit==5) cout<<"five";
if(unit==6) cout<<"six";
if(unit==7) cout<<"seven";
if(unit==8) cout<<"eight";
if(unit==9) cout<<"nine"; }
}