Перевод числа в словесное представление

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
shadevskiy
Сообщения: 1
Зарегистрирован: 04 мар 2015, 03:58

Если я пишу 11, то он выдает одиннадцать и ползет дальше выдавая десять. Как я понимаю, нужно ввести цикл, чтобы потом после каждого написать "break". Можно поставить после чисел от 11 до 19 "return" , но тогда он будет выполнять их, но не выполнять последующие.
Вот код:

Код: Выделить всё

#include
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
setlocale(0," ");
int n;
cout << ("Введите натуральное число : ");
cin >> n;
if(n==0)
{
cout << "нуль";
system ("pause >> void");
return 0;
}
{
for (int n=11 ; n <20 ;n++);
{
if (n==11)
cout <<"Одиннадцать";
if (n==12)
cout <<"Двенадцать";
if (n==13)
cout <<"Тринадцать";
if (n==14)
cout <<"Четырнадцать";
if (n==15)
cout <<"Пятнадцать";
if (n==16)
cout <<"Шестнадцать";
if (n==17)
cout <<"Семнадцать";
if (n==18)
cout <<"Восемнадцать";
if (n==19)
cout <<"Девятнадцать";
}
}
//тысяч
switch (n/1000)
{
case 1: cout << "одна тысяча "; break;
case 2: cout <<"две тысячи "; break;
case 3: cout <<"три тысячи "; break;
case 4: cout <<"четыре тысячи ";break;
case 5: cout <<"пять тысяч "; break;
case 6: cout <<"шесть тысяч "; break;
case 7: cout <<"семь тысяч "; break;
case 8: cout <<"восемь тысяч "; break;
case 9: cout <<"девять тысяч ";break;
}
//сотен
switch ((n/100)%10)
{
case 1: cout <<"сто "; break;
case 2: cout <<"двести "; break;
case 3: cout <<"триста "; break;
case 4: cout <<"четыреста "; break;
case 5: cout <<"пятьсот "; break;
case 6: cout <<"шестьсот "; break;
case 7: cout <<"семьсот "; break;
case 8: cout <<"восемьсот "; break;
case 9: cout <<"девятьсот "; break;
}
//десятков
switch ((n/10)%10)
{
case 1: cout <<"десять "; break;
case 2: cout <<"двадцать "; break;
case 3: cout <<"тридцать "; break;
case 4: cout <<"сорок "; break;
case 5: cout <<"пятьдесят "; break;
case 6: cout <<"шестьдесят "; break;
case 7: cout <<"семьдесят "; break;
case 8: cout <<"восемьдесят ";break;
case 9: cout <<"девяносто "; break;
}
//единиц
switch (n%10)
{
case 1: cout <<"один"; break;
case 2: cout <<"два"; break;
case 3: cout <<"три"; break;
case 4: cout <<"четыре"; break;
case 5: cout <<"пять"; break;
case 6: cout <<"шесть"; break;
case 7: cout <<"семь"; break;
case 8: cout <<"восемь"; break;
case 9: cout <<"девять"; break;
}
cout << (" \n Пожалуйста, введите натуральное число ");
system ("pause >> void");
return 0;
}
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

А в чём смысл программы вообще? Я что-то не могу понять, что она должна делать. Написать буквенный эквивалент введённого числа? Если так, то зачем вообще цикл? Он же мало того, что выведет все слова от "одиннадцать" до "девятнадцать", так ещё и затрёт значение n, которое ввёл пользователь, то есть вообще глупость получается, а не код.

Почему вот так не сделать?

Код: Выделить всё

if (n == 0)
{
   cout << "ноль";
   system ("pause >> void");
   return 0;
}

if (n < 0)
{
   cout << "минус ";
   n = -n;
}

//тысяч
switch (n/1000)
{
   case 1: cout <<"одна тысяча "; break;
   case 2: cout <<"две тысячи "; break;
   case 3: cout <<"три тысячи "; break;
   case 4: cout <<"четыре тысячи ";break;
   case 5: cout <<"пять тысяч "; break;
   case 6: cout <<"шесть тысяч "; break;
   case 7: cout <<"семь тысяч "; break;
   case 8: cout <<"восемь тысяч "; break;
   case 9: cout <<"девять тысяч ";break;
}

//сотен
switch ((n/100)%10)
{
   case 1: cout <<"сто "; break;
   case 2: cout <<"двести "; break;
   case 3: cout <<"триста "; break;
   case 4: cout <<"четыреста "; break;
   case 5: cout <<"пятьсот "; break;
   case 6: cout <<"шестьсот "; break;
   case 7: cout <<"семьсот "; break;
   case 8: cout <<"восемьсот "; break;
   case 9: cout <<"девятьсот "; break;
}

//десятков
switch ((n/10)%10)
{
   case 1:
   { 
      switch (n%10)
      {
         case 0: cout << "десять"; break;
         case 1: cout << "одиннадцать"; break;
         case 2: cout << "двенадцать"; break;
         case 3: cout << "тринадцать"; break;
         case 4: cout << "четырнадцать"; break;
         case 5: cout << "пятнадцать"; break;
         case 6: cout << "шестнадцать "; break;
         case 7: cout << "семнадцать"; break;
         case 8: cout << "восемнадцать"; break;
         case 9: cout << "девятнадцать"; break;
      }
      system ("pause >> void");
      return 0;
   }
   case 2: cout <<"двадцать "; break;
   case 3: cout <<"тридцать "; break;
   case 4: cout <<"сорок "; break;
   case 5: cout <<"пятьдесят "; break;
   case 6: cout <<"шестьдесят "; break;
   case 7: cout <<"семьдесят "; break;
   case 8: cout <<"восемьдесят ";break;
   case 9: cout <<"девяносто "; break;
}

//единиц
switch (n%10)
{
   case 1: cout <<"один"; break;
   case 2: cout <<"два"; break;
   case 3: cout <<"три"; break;
   case 4: cout <<"четыре"; break;
   case 5: cout <<"пять"; break;
   case 6: cout <<"шесть"; break;
   case 7: cout <<"семь"; break;
   case 8: cout <<"восемь"; break;
   case 9: cout <<"девять"; break;
}

system ("pause >> void");
return 0;
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
alex123456
Сообщения: 1
Зарегистрирован: 16 мар 2015, 17:35

Компания Микс Сервис производит доставку и монтаж рольставни, ворот, шлагбаумов, автоматического оборудования разного направления. Мы создаем и ставим изделия из ПВХ и алюминия, жалюзи, горизонтальные пристекольная система Венусобычные вертикальные и обычные, мультифактурные горизонтальные жалюзи
Основными направлениями нашей работы являются: монтаж и поставка рольставен и ворот: механических, распашных, автоматических, сдвижных, рулонных, кованных, секционных,. Мы являемся представителем таких фирм, как: «Алеко»,«DoorHan», «Алютех»

http://mix-service44.ru/
Ответить