Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 11.05.2006, 18:06   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Смущение

Курса4 с перового курса. Решение не о4ень изящное - ибо в лом было выпендриваться ( и так делал под win и прочими самопридуманными усложнениями -т.к. в первоначальном варианте зада4ка просто школьная)

Задание - преобразования числа в его кириллическу запись (123=сто двадцать три). Верхний предел оговорён (в задаче - просто), у меня - по модулю.

//функция генерации строки по переданному в аргументе
//x трёхзначному числу разряда n.
//Возвращаемая строка передаётся как аргумент char out[]
bool decod3(int x,int n,char out[]){
	int a23=x%100;//последние 2 цифры
	int a1=x/100;//первая цифра

	//выбор названия первой цифры

	switch(a1){
 *case 1: {strcat(out,"сто ");break;}
 *case 2: {strcat(out,"двести ");break;}
 *case 3: {strcat(out,"триста ");break;}
 *case 4: {strcat(out,"четыреста ");break;}
 *case 5: {strcat(out,"пятьсот ");break;}
 *case 6: {strcat(out,"шестьсот ");break;}
 *case 7: {strcat(out,"семьсот ");break;}
 *case 8: {strcat(out,"восемьсот ");break;}
 *case 9: {strcat(out,"девятьсот ");break;}
 *default: break;
	}
	//выбор названия оставшихся 2ух

	//так как числительные от 10 до 19 включительно имеют
	//собственные названия не соответствующие алгоритму
	//кол-во десяток + кол-во единиц,
	//их обрабатываем отдельно
	if((a23>9)&&(a23<20)){
 *switch(a23){
 *	case 10: {strcat(out,"десять ");break;}
 *	case 11: {strcat(out,"одиннадцать ");break;}
 *	case 12: {strcat(out,"двенадцать ");break;}
 *	case 13: {strcat(out,"тринадцать ");break;}
 *	case 14: {strcat(out,"четырнадцать ");break;}
 *	case 15: {strcat(out,"пятнадцать ");break;}
 *	case 16: {strcat(out,"шестнадцать ");break;}
 *	case 17: {strcat(out,"семнадцать ");break;}
 *	case 18: {strcat(out,"восемнадцать ");break;}
 *	case 19: {strcat(out,"девятнадцать ");break;}
 *	default: break;
 *}
 *//если разряд тысяч, то конкатенируем к строке слово
 *//"тысяч"
 *if(n==1)strcat(out,"тысяч ");
	}

	//если числа не лежат в [10;19], то:
	else{

 *//если число>10 (и >19 так как это обработано выше),
 *//то определяем название десятка
 *if(a23>10){
 *	switch(a23/10){
 * *case 2: {strcat(out,"двадцать ");break;}
 * *case 3: {strcat(out,"тридцать ");break;}
 * *case 4: {strcat(out,"сорок ");break;}
 * *case 5: {strcat(out,"пятьдесят ");break;}
 * *case 6: {strcat(out,"шестьдесят ");break;}
 * *case 7: {strcat(out,"семьдесят ");break;}
 * *case 8: {strcat(out,"восемьдесят ");break;}
 * *case 9: {strcat(out,"девяносто ");break;}
 * *default: break;
 *	}
 *	a23%=10;//получаем последнюю цифру - число единиц
 *}

 *//после выполнения предыдущего блока в переменной a23
 *//хранится число единиц - младшая цифра, так как
 *//если число было больше 10, то его десяток был обработан
 *//а от самого числа взят остаток от деления на 10
 *//т.е. число<10 - младшая цифра;
 *//если же число было меньше 10 то предыдущий
 *//условный блок не выполняется - десяток числа не обрабатывается
 *//за его отсутствием
 *switch(a23){
 *	//случай: 0 единиц
 *	//добавляем название разряда
 *	case 0: {
 * *if(n==1)strcat(out,"тысяч ");
 * *break;}
 *	//случай: 1 единица
 *	//добавляем числительное и, в зависимости от
 *	//разряда, название разряда
 *	case 1: {
 * *if(n==0)strcat(out,"один ");
 * *else if(n==1)strcat(out,"одна тысяча ");
 * *break;}
 *	//аналогично...
 *	case 2: { * *
 * *if(n==0)strcat(out,"два ");
 * *else if(n==1)strcat(out,"две тысячи ");
 * *break;}
 *	case 3: { * *
 * *if(n==0)strcat(out,"три ");
 * *else if(n==1)strcat(out,"три тысячи ");
 * *break;}
 *	case 4: { * *
 * *if(n==0)strcat(out,"четыре ");
 * *else if(n==1)strcat(out,"четыре тысячи ");
 * *break;}
 *	case 5: { * *
 * *if(n==0)strcat(out,"пять ");
 * *else if(n==1)strcat(out,"пять тысяч ");
 * *break;}
 *	case 6: { * *
 * *if(n==0)strcat(out,"шесть ");
 * *else if(n==1)strcat(out,"шесть тысяч ");
 * *break;}
 *	case 7: { * *
 * *if(n==0)strcat(out,"семь ");
 * *else if(n==1)strcat(out,"семь тысяч ");
 * *break;}
 *	case 8: { * *
 * *if(n==0)strcat(out,"восемь ");
 * *else if(n==1)strcat(out,"восемь тысяч ");
 * *break;}
 *	case 9: { * *
 * *if(n==0)strcat(out,"девять ");
 * *else if(n==1)strcat(out,"девять тысяч ");
 * *break;}
 *	default: break;
 *}

	}
//Если функция завершила свою работу без ошибок
return true;//вернуть ИСТИНУ
}	

//функция перевода стоки input[], содержащей число,
//в строку output[], содержащую числительные
bool translate(char input[],char output[]){
 *//обнуление массива output путём присвоения первому байту
 *//нулевого значения
 *output[0]=0;
 *//получения числа из строки
 *long x=atoi(input);
 *//если число превышает указанные в задачи пределы,
 *//то вернуть ЛОЖЬ
 *if(abs(x)>999999){return false;}
 *//если число равно 0, то записать "ноль" в строку
 *//output и выйти из функции с ИСТИНОЙ
 *if(x==0){strcat(output,"ноль ");return true;}
 *//если число меньше нуля, то скопировать слово "минус"
 *//в строку output, а само число умножить на -1
 *if(x<0){strcat(output,"минус ");x*=-1;}
 *//если число превышает 999, то обработать первые
 *//3 цифры как разряд тысяч и записать в переменную
 *//3 последних цифры
 *if(x>999){decod3(x/1000,1,output);x%=1000;}
 *//обработать число (<1000)
 *decod3(x,0,output);
 *//вернуть ИСТИНУ
 *return true;
}
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 11.05.2006, 18:20   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Смущение

Сама прога - юзание строго с моего разрешения!
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 11.05.2006, 18:22   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Смущение

Необходимые (если у вас не установлен Вижуал Студио) библиотеки
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 12.05.2006, 00:19   #4
jimon
 
Сообщений: n/a
интерисно что за dll юзает такая "большая" прога ?
 
Ответить с цитированием
Старый 12.05.2006, 00:23   #5
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Originally posted by jimon@11.5.2006, 22:19
интерисно что за dll юзает такая "большая" прога ?
MFC
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 12.05.2006, 19:39   #6
jimon
 
Сообщений: n/a
imho MFC = зло
как никрути

win32api != зло
 
Ответить с цитированием
Старый 12.05.2006, 20:54   #7
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Originally posted by jimon@12.5.2006, 17:39
imho MFC = зло
как никрути

win32api != зло
флуд тоже зло
__________________
(Offline)
 
Ответить с цитированием
Старый 12.05.2006, 23:46   #8
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Радость

2jimon:
продолжая аналогию:
win api =зло
любой_язык_и_интерфейс=зло
ассемблер=зло
да но то пошло - и машинный код =зло, т.к. вариативность ПК как такогого ограничена.
И вообще юзать гвотовые компьютеры - ламерство! Надо свои собирать...да... Кстати - юзать готовые матери/винты/видяхи - недальновидность и зло... кстати паять их паяльниками(не произведёнными самостоятельно) - тоже зло, т.к. заводские паяльники не обладают необходимой вариатностью и придуманы ламерами.

Короче jimon - ты нарвёшься...
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 13.05.2006, 22:36   #9
jimon
 
Сообщений: n/a
в моем посте было хорошее и правильное слово : imho
а в твоем нет
делай выводы я никого нихочу переубедить - просто я так щитаю, и имею право выразить свою точку зрения
 
Ответить с цитированием
Старый 13.05.2006, 23:54   #10
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Originally posted by jimon@13.5.2006, 19:36
имею право выразить свою точку зрения
... по теме или в Болтовне.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод в десятичное число MiXaeL Полезные функции 5 25.12.2009 16:30
Угадаю ваше число Koruna Загадки 4 15.09.2008 17:15
Слово(выражение)->Число pax C++ 0 20.05.2006 20:36


Часовой пояс GMT +4, время: 14:48.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com