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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2014, 18:45   #1
anabel123123
Пользователь
 
Аватар для anabel123123
 
Регистрация: 16.10.2014
Сообщений: 15
Вопрос С++, делала задачу по примеру, нужно сделать так чтобы числа которые выводятся рандомно писались буквами,

С++, делала задачу по примеру, нужно сделать так чтобы числа которые выводятся рандомно писались буквами,русскими, я попробовала сделать хоть английскими, но код не работает правильно,он не выводит числа словами, помогите пожалуйста доработать, я новичок и не очень понимаю(
Код:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <conio.h>
using namespace std;
int main()
{
	int value;
	string _1;
	srand(time(0));
	value = 0 + rand() % 999;
	cout << value << endl;

	switch (value / 100)
	{
	case 9:
		_1 = "devatsot";
		cout << 9;
		break;
	case 8:
		_1 = "vosemsot";
		cout << 8;
		break;
	case 7:
		_1 = "semsot";
		cout << 7;
		break;
	case 6:
		_1 = "westsot";
		cout << 6;
		break;
	case 5:
		_1 = "p9tsot";
		cout << 5;
		break;
	case 4:
		_1 = "4etiresta ";
		cout << 4;
		break;
	}
	cout << " ";
	_getch();
	return 0;
}

Последний раз редактировалось Stilet; 14.12.2014 в 19:53.
anabel123123 вне форума Ответить с цитированием
Старый 14.12.2014, 18:58   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Нужно выделить последнюю двадцатку чисел и присвоить ей словесные соответствия.

1 - один
2 - два
.........
9 - девять
10 - десять
11 - одинадцать
12 - двенадцать
.......
19 - девятнадцать
20 - двадцать
30 - тридцать
.....
90 - девяносто
100 - сто
......
900 - девятьсот

Если последние два числа больше 20 то берём первую часть числа из десятков и прибавляем слово единиц. Так-же поступаем и с сотнями.
сто + девятнадцать
сто + двадцать + девять.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 14.12.2014, 19:03   #3
anabel123123
Пользователь
 
Аватар для anabel123123
 
Регистрация: 16.10.2014
Сообщений: 15
По умолчанию

а как это сделать в коде?что бы он именно слово выводил,сейчас он выводит цифру

Последний раз редактировалось anabel123123; 14.12.2014 в 19:13.
anabel123123 вне форума Ответить с цитированием
Старый 14.12.2014, 19:25   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от anabel123123 Посмотреть сообщение
а как это сделать в коде?что бы он именно слово выводил,сейчас он выводит цифру
Прежде всего, нужно создать три строковых списка, а уже из этих списков получать нужные значения.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 14.12.2014, 19:54   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Тада-а-а-м: http://www.programmersforum.ru/showthread.php?t=137434
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.12.2014, 20:36   #6
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
"Один","два","три","четыре","пять", "шесть","семь","восемь","девять","д есять"};
char deca[20]="надцать";

одиннадцать
дванадцать
четыренадцать
десятьнадцать
Шутник однако .

Вот, полностью адекватно работающий код от 0 до 999.
Код:
Файл rus.h
typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD);     // прототип недокументированый функции
 SETCONSOLEFONT SetConsoleFont;

HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");     // функция здесь
SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");   // берем ее адрес
if (!SetConsoleFont) {cout<<"error\n" ; exit(1);}   //   если ошибка
SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE), 8);  // устанавливаем 8-й шрифт..
//эксперементально установил что в обычной XP  это Lucida  Console = 6 или 8.
// разница только в размерах 6-и помельче
SetConsoleCP(1251);
SetConsoleOutputCP(1251) ;  // устанавливаем кодировку вывода


// перевод числовой формы чисел в словесную
#include <iostream.h>
#include <stdlib.h>
using namespace std;
string ed[20] = {"ноль", "один", "два", "три", "четыре", "пять",
                 "шесть", "семь", "восемь", "девять", "десять",
                 "одинадцать", "двенадцать", "тринадцать",
                 "четырнадцать", "пятнадцать", "шестьнадцать",
                 "семьнадцать", "восемьнадцать", "девятьнадцать"};
string des[8] = {"двадцать", "тридцать", "сорок", "пятьдесят",
                 "шестьдесят", "семьдесят", "восемьдесят", "девяносто"};
string sot[9] = {"сто", "двести", "триста", "четыреста", "пятьсот",
                 "шестьсот", "семьсот", "восемьсот", "девятьсот"};
int main()
{
  #include "rus.h";
  int x = 921, y;
  if(x >= 100)
  {
    y = x/100-1;
    cout << sot[y] << " ";
  }
  y = x%100;
  if(y < 20) cout << ed[y] << " ";
  else
  {
    cout << des[y/10-2] << " ";
    if(y%10 != 0) cout << ed[y%10] << " ";
  }
  cout << "\n";
  system("pause");
  return 0;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 14.12.2014 в 20:46.
Smitt&Wesson вне форума Ответить с цитированием
Старый 14.12.2014, 21:05   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Шутник однако .
Не, ну я же должен что-то оставить авторам тем для раздумий
Цитата:
десятьнадцать
Зато звучит по нашему, прям как знаменитые +стопятьсот
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.12.2014, 22:16   #8
Любящая весну
Пользователь
 
Аватар для Любящая весну
 
Регистрация: 07.08.2010
Сообщений: 55
По умолчанию

Вот когда-то нам задание было: пользователь вводит сумму в числовом виде, программа говорит сколько это рублей в буквенном варианте.
Код:
#include<iostream>
#include<windows.h>
//#include<math.h>
#include<cmath>
#include<cctype>
#include<ctime>
#include<cstdlib>

using namespace std;

int main()
{
	SetConsoleOutputCP(1251);

	int som=0;		//введенная сумма денег
	int sotnya=0;		//сотни
	int des=0;			//десятки
	int odin=0;			//единицы
	int digit=0;		//изменяемая временная переменная
	int des_digit=0;	//2 последние цифры
	int tries=0;		//кол-во попыток ввода денег
	int usl=0;			//условие повторения ввода кол-ва денег
	while(tries<7)
	{
		cout<<"Введите сумму денег: \n";
		cin>>som;				//ввод суммы с клавиатуры

		cout<<"Ваша сумма: ";

		odin=som%10;
		digit=som/10;
		des=som%100;
		des_digit=digit%10;
		digit=digit/10;
		sotnya=digit;
		switch(sotnya)
		{
		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;
		default:
			break;
		}
		if (des > 10 && des < 20)
		{
			if(des==11)
			{
				cout<<"одиннадцать ";
			}
			else if(des==12)
			{
				cout<<"двенадцать ";
			}
			else if (des==13)
			{
				cout<<"тринадцать ";
			}else if(des==14)
			{
				cout<<"четырнадцать ";
			}
			else if (des==15)
			{
				cout<<"пятнадцать ";
			}else if(des==16)
			{
				cout<<"шестнадцать ";
			}
			else if (des==17)
			{
				cout<<"семнадцать ";
			}else if(des==18)
			{
				cout<<"восемнадцать ";
			}
			else if (des==19)
			{
				cout<<"девятнадцать ";
			}
		}
		else
		{
			switch (des_digit)
			{
			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;
			default:
				break;
			}
			switch (odin)
			{
			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;		
			default:
				break;
			}
		}
		if (som == 0)
		{
			cout<<"ноль ";
		}

		int a=10;
		if(som % 100 > 10 && som % 100 < 15)
		{
			cout<<"рублей.\n";
		}
		else
		{
			int final_s=som%a;
			if(final_s > 1 && final_s < 5)
			{
				cout<<"рубля.\n";
			}
			else if(final_s > 4 && final_s < 10 || final_s == 0)
			{
				cout<<"рублей.\n";
			}
			else if(final_s == 1)
			{
				cout<<"рубль.\n";
			}
		}
		tries++;
		if(tries < 7)
		{
			cout<<"Повторить? 1-нет"<<endl;	
			cin>>usl;
			if(usl == 1)
			{
				cout<<"Были рады видеть Вас!"<<endl;
				break;
			}
		}
	}
	if(tries>=7)
	{
		cout<<endl;
		cout<<"А играться не надоело еще? ;)"<<endl;
	}

	return 0;
}
Начало - половина дела.
Любящая весну вне форума Ответить с цитированием
Старый 14.12.2014, 22:32   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Ужас. Говнокод в действии .
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 15.12.2014, 07:09   #10
Любящая весну
Пользователь
 
Аватар для Любящая весну
 
Регистрация: 07.08.2010
Сообщений: 55
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Ужас. Говнокод в действии .
спасибо)) это тоже было самое начало деятельности, когда впервые switch/case увидела) За Вами остается право удалить пост)
Начало - половина дела.

Последний раз редактировалось Любящая весну; 15.12.2014 в 07:25.
Любящая весну вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать так,чтобы он левой рукой до стены коснулся? и если можно чтобы двери лифта закрылись maxon56 Паскаль, Turbo Pascal, PascalABC.NET 0 07.06.2011 18:46
как сделать, чтобы при переносе с одного листа на другой данные не заменялись, а писались в новую строку? user199a Microsoft Office Excel 4 08.01.2011 18:13
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
2 столбец для того, чтобы автоматически создавались числа, которые позволяли уравнивать числа в 3 столбце ppv Microsoft Office Excel 37 05.08.2009 21:19
Как сделать так, чтобы в компонент edit вводились цифры и аналогично с буквами? Askat Общие вопросы Delphi 6 22.08.2007 21:00