Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2015, 20:29   #1
Вика228
Новичок
Джуниор
 
Регистрация: 29.03.2015
Сообщений: 1
По умолчанию C++ числа прописью

Код:
void main()
{
	setlocale(LC_ALL, "Russian");
	string st;
	int n, i;
	int c[4];
	string s[4][3];
	s[0][0] = "миллиард";
	s[0][1] = "миллиарда";
	s[0][2] = "миллиардов";
	s[1][0] = "миллион";
	s[1][1] = "миллиона";
	s[1][2] = "миллионов";
	s[2][0] = "тысяча";
	s[2][1] = "тысячи";
	s[2][2] = "тысяч";
	s[3][0] = ' ';
	s[3][1] = ' ';
	cout << "Введите число до 2 147 483 647 n=";
	cin >> n;
	st = ' ';
	c[0] = n / 1000000000;
	c[1] = (n % 1000000000) / 1000000;
	c[2] = (n % 1000000) / 1000;
	c[3] = n % 1000;
	for (int i = 0; i < 4; i++)
	{
		cout << endl;
	}

	for (int i = 0; i < 4; i++){

		if (c[i] != 0)
		{
			if (c[i] / 100 != 0){
				switch (c[i] / 100){
				case 1:st = st + "сто";
					break;
				case 2:st = st + "двести"; break;
				case 3:st = st + "триста"; break;
				case 4:st = st + "четыреста"; break;
				case 5:st = st + "пятьсот"; break;
				case 6:st = st + "шестьсот"; break;
				case 7:st = st + "семьсот"; break;
				case 8:st = st + "восемьсот"; break;
				case 9:st = st + "девятьсот"; break;
				}
			}
		}
		if (c[i] % 100 && c[i] / 10 != 1)
		{
			switch ((c[i] % 100) / 10) {
			case 2:st = st + "двадцать"; cout << endl; break;
			case 3:st = st + "тридцать"; cout << endl; break;
			case 4:st = st + "сорок"; cout << endl;;
			case 5:st = st + "пятьдесят"; cout << endl; break;
			case 6:st = st + "шестьдесят"; cout << endl; break;
			case 7:st = st + "семьдесят"; cout << endl; break;
			case 8:st = st + "восемьдесят"; cout << endl; break;
			case 9:st = st + "девяносто"; cout << endl; break;
			}

			switch (c[i] % 10){
			case 1:{if (i == 3)st = st + " одна";
				   else st = st + "один"; cout << endl; }
			case 2:{if (i == 3)  st = st + " две";
				   else st = st + " два"; cout << endl; }
			case 3:st = st + " три"; cout << endl; break;
			case 4:st = st + " четыре"; cout << endl; break;
			case 5:st = st + "пять"; cout << endl; break;
			case 6:st = st + "шесть"; cout << endl; break;
			case 7:st = st + "семь"; cout << endl; break;
			case 8:st = st + " восемь"; cout << endl; break;
			case 9:st = st + "девять"; cout << endl; break;
			}

		}

		else  {
			switch (c[i] % 100) {
			case 10:st = st + " десять"; cout << endl; break;
			case 11:st = st + " одиннадцать"; cout << endl; break;
			case 12:st = st + "двенадцать"; cout << endl; break;
			case 13:st = st + "тринадцать"; cout << endl; break;
			case 14:st = st + " четырнадцать"; cout << endl; break;
			case 15:st = st + " пятнадцать"; cout << endl; break;
			case 16:st = st + " шестнадцать"; cout << endl; break;
			case 17:st = st + " семнадцать"; cout << endl; break;
			case 18:st = st + " восемнадцать"; cout << endl; break;
			case 19:st = st + " девятнадцать"; cout << endl; break;
			}
		}

		if (c[i] % 100 >= 10 && c[i] % 100 <= 19)
			st = st + ' ' + s[i][2] + ' ';
		else{
			switch (c[i] % 10){
			case 1:{st = st + ' ' + s[i][0] + ' '; }
			case 2: case 4:{st = st + ' ' + s[i][1] + ' '; }
			case 5:case 9:case 10:{st = st + ' ' + s[i][2] + ' '; }
			}
		}
	}
		cout <<"***"<< st;
	system("pause");


	}
Выводит впереди миллионы миллиарды. В чем ошибка, помогите пожалуйста
про.jpg

Последний раз редактировалось Stilet; 29.03.2015 в 21:16.
Вика228 вне форума Ответить с цитированием
Старый 29.03.2015, 22:06   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вы серьезно не видите куда постите?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.03.2015, 22:49   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Перенес тему...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цифры прописью ivan-makeem Microsoft Office Excel 0 29.08.2012 02:46
Программа записи натурального числа прописью в заданном падеже Hope1 Помощь студентам 0 06.04.2012 14:38
Числа прописью vldand Microsoft Office Excel 1 31.08.2009 17:23
Сумма прописью LX Da Mad Microsoft Office Excel 5 27.06.2008 01:54
Числа прописью _ozzy_ Общие вопросы Delphi 2 19.01.2007 14:45