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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2010, 16:15   #1
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

здравствуйте задача такая
нужно что бы при вводе числа писал его русскими буквами
вот что я сделал
не пойму как дальше делать
нужно хотя бы до N<30
просто подскажите не удаляйте тему
Код:
#include <iostream>
#include <conio.h>
#include <locale.h>
#include <stdio.h>
using namespace std;
	char const* pS[]={"один",
		"два", 
		"три", 
		"четыре", 
		"пять", 
		"шесть", 
		"семь", 
		"восемь",
		"девять"};
	//char const* pSa{"десять", 
	//	"надцать", 
	//	"двадцть", 
	//	"тридцать", 
	//	"сорок", 
	//	"десят", 
	//	"восемь",
	//	"девяносто"};
int main()
{
	setlocale(LC_ALL, "Russian");
	int k=0;
	int x=0;
	int n=1;
	cout<<"введите число\n";
	cin>>x;
	while(x>=n+1);{
		do
		{
		cout<<"введите число\n";	
		}
		while(x>=9);
		if(x==0)
			if(x==1)
				break;
			else
				k=1;
		else
			if(x==2)
				k=2;
			else
			if(x>0)
				if(x>0)
					k=2;
				else
					k=3;
			else
			if(x>0)
				k=4;
			else
				k=5;
		cout<<pS[k];
		cout<<endl;
	}
}
как реализовать преход на десятки ?

этот код может и не верный
но примерно выглядит где то так
как оптимизировать
и сделать переход на десятки
Код:
//while(x>=n+1);{
do
{
cout<<"введите число\n"; 
}
while(x>=9);
if(x==0)
if(x==1)
break;
else
k=1;
else
if(x==2)
k=2;
else
if(x>0)
if(x>0)
k=2;
else
k=3;
else
if(x>0)
k=4;
else
k=5;
cout<<pS[k];
cout<<endl;
}
}//

Последний раз редактировалось Stilet; 25.02.2010 в 17:03.
Alex_sim вне форума Ответить с цитированием
Старый 25.02.2010, 18:22   #2
loser
Пользователь
 
Регистрация: 19.02.2010
Сообщений: 30
По умолчанию

Ну для начала рекомендую ознакомится с оператором switch. А так же стоит освоить деление по модулю %, для вычленения порядков из числа.
loser вне форума Ответить с цитированием
Старый 25.02.2010, 19:35   #3
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

Не подскажешь как это реализовать ?переключатель switch я знаю а как сделать так чтобы при вводе например 23 писал , двадцать три , как соединить два значения массива то есть два адреса?
Alex_sim вне форума Ответить с цитированием
Старый 25.02.2010, 19:54   #4
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
char const* pS[]={"один",
		"два", 
		"три", 
		"четыре", 
		"пять", 
		"шесть", 
		"семь", 
		"восемь",
		"девять"};
и че ты так собираешься до 100500 писать ?=))
или тебе до 30 надо

а если по делу, то здесь вообще не нужны условия и темболее switch
можно например вот так:
Код:
int chislo;
char* str[] = {"один", "два","три","четыре","пять"};
cin << chislo;
cout << str[chislo-1];

Последний раз редактировалось NiCola999; 25.02.2010 в 20:17.
NiCola999 вне форума Ответить с цитированием
Старый 25.02.2010, 20:31   #5
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

Вопрос такой а как тогда сделать если число 121 не писать же все ? Надо же сделать несколько массивов.как я понимаю отдельно для десятков . Единиц сотен .
Alex_sim вне форума Ответить с цитированием
Старый 25.02.2010, 20:40   #6
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

допустим число 121
это "сто двадцать один"
сделать строковые константы для сотен, десятков итд
типа:
"один","сто","тысяча"
а также приставки
"сти","дцать","ста"
а также для цифр
"два","три" ... до 9
потом к этим константам присоединять приставки. Идея понятна? Первое что пришло в голову

Последний раз редактировалось NiCola999; 25.02.2010 в 20:58.
NiCola999 вне форума Ответить с цитированием
Старый 25.02.2010, 21:05   #7
loser
Пользователь
 
Регистрация: 19.02.2010
Сообщений: 30
По умолчанию

Цитата:
Сообщение от Alex_sim Посмотреть сообщение
Вопрос такой а как тогда сделать если число 121 не писать же все ? Надо же сделать несколько массивов.как я понимаю отдельно для десятков . Единиц сотен .
321 % 10 = 1
321 % 100 / 10 = 2
321 % 1000 / 100 = 3

etc
loser вне форума Ответить с цитированием
Старый 26.02.2010, 05:39   #8
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию

Спасибо это я понял , сделал , вот еще вопрос как сделать что бы программа определяла к какому что присоеденять, делать , все это про писать через "вайл" и иф и елсо?. Или как это сделать ?
Alex_sim вне форума Ответить с цитированием
Старый 26.02.2010, 09:59   #9
loser
Пользователь
 
Регистрация: 19.02.2010
Сообщений: 30
По умолчанию

Код:
    switch(number%1000/100){
        ...
        case 3: cout<<"триста "; break;
        ...
    }
    switch(number%100/10){
        ...
        case 2: cout<<"двадцать "; break;
        ...
    }
    switch(number%10){
        case 1: cout<<"один "; break;
        ...
    }
loser вне форума Ответить с цитированием
Старый 26.02.2010, 15:15   #10
Alex_sim
Форумчанин
 
Аватар для Alex_sim
 
Регистрация: 18.02.2010
Сообщений: 164
По умолчанию спасибо

[code] switch(number%1000/100){
...
case 3: cout<<"триста "; break;
...
}
switch(number%100/10){
...
case 2: cout<<"двадцать "; break;
...
}
switch(number%10){
case 1: cout<<"один "; break;
...
}
[code]
как я понял это разбиение на разряды?
Alex_sim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Zadacha po izmeneniu command Zmeiarm Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 22.12.2009 15:10
Paskal zadacha NTFF Помощь студентам 9 29.09.2009 19:02