На самом деле ваша программа работает правильно.Для ввода 25
должно быть пять, потому что вы делаете unit = number%10
, который возвращает 5
и if(unit==5) cout<<"five";
прямо из вашего собственного кода.
Если вы хотите получить twenty five
взамен, вы должны изменитькод.
Вместо прямого сопоставления сохраните числа на карте и проверьте их значение.и другой подход - хранить их в двух разных списках, таких как: d1 = ['zero','one' ...]
и d10 = ['ten', 'twenty', 'thirty', ...]
.Этим вы ничего не будете повторять.Кроме того, вы можете проверить длину ввода и узнать, является ли оно одним десятичным числом или двумя, и если 2 десятичного числа, вы можете получить первое с number/10
и второе с number%10
и объединить результат.Пусть 'take 25
, вы будете искать 2
в списке d10
и 5
в списке d1
, и в конце вы получите «двадцать» + «пять»
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