G
Guest
Здравствуйте!
Занимаюсь по книге и долгое время не могу решить одну задачу.
Вот дословное упражнение:
"Напишите программу, которая принимает число, введённое пользователем с экрана, и выделяет и отображает значение каждой цифры числа на английском языке. Например, если пользователь наберёт число 932, программа должна напечатать:
nine three two . Не забывайте сделать вывод слова "zero", если пользователь введёт только число 0. Заметим, что это довольно сложное упражнение."
До этого я изучил только типы данных, циклы и принятия решений ( if, case ).
В книге был пример как выцепить правую цифру из числа ( делим по модулю, затем умножаем на 10 ). Я решил это тут использовать.
Проблема: при деление числа - цифра уменьшается в некоторых случаях ( к примеру набрать 7654, то выдаёт seven six five three ). Как это можно исправить? или я вообще не по тому пути пошёл?в книге на это задание нет ответа.
Вопрос номер два. Часто ли дебагер показывает другое нежели откомпилинная программа? При вводе букв дебаг показывает одно, а готовая программа другое.
Занимаюсь по книге и долгое время не могу решить одну задачу.
Вот дословное упражнение:
"Напишите программу, которая принимает число, введённое пользователем с экрана, и выделяет и отображает значение каждой цифры числа на английском языке. Например, если пользователь наберёт число 932, программа должна напечатать:
nine three two . Не забывайте сделать вывод слова "zero", если пользователь введёт только число 0. Заметим, что это довольно сложное упражнение."
До этого я изучил только типы данных, циклы и принятия решений ( if, case ).
В книге был пример как выцепить правую цифру из числа ( делим по модулю, затем умножаем на 10 ). Я решил это тут использовать.
Проблема: при деление числа - цифра уменьшается в некоторых случаях ( к примеру набрать 7654, то выдаёт seven six five three ). Как это можно исправить? или я вообще не по тому пути пошёл?в книге на это задание нет ответа.
Вопрос номер два. Часто ли дебагер показывает другое нежели откомпилинная программа? При вводе букв дебаг показывает одно, а готовая программа другое.
C++:
#include <stdio.h>
int main (void)
{
int vivod;
int chislo;
double temp;
printf ("Vvedite polozhitelnoe chislo: ");
scanf ("%i", &chislo);
temp = chislo;
while ( 10 <= temp && temp != 0 )
temp = temp / 10;
vivod = temp;
while ( temp <= chislo && temp > 0 )
{
switch (vivod)
{
case 1:
printf ("one ");
break;
case 2:
printf ("two ");
break;
case 3:
printf ("three ");
break;
case 4:
printf ("four ");
break;
case 5:
printf ("five ");
break;
case 6:
printf ("six ");
break;
case 7:
printf ("seven ");
break;
case 8:
printf ("eight ");
break;
case 9:
printf ("nine ");
break;
case 0:
printf ("null ");
break;
}
vivod = temp * 10;
vivod %= 10;
temp *= 10;
}
if ( chislo == 0 )
printf ("zero");
else if ( chislo < 0 )
printf ("Oshibka vvoda");
return 0;
}