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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2014, 15:33   #1
More Option
Новичок
Джуниор
 
Регистрация: 08.06.2014
Сообщений: 1
По умолчанию Перевести числа в слова

Здравствуйте, помогите, пожалуйста, решить задачу или хотя бы натолкните на мысль. Начали изучать C# всего четыре дня назад, пока плохо понимаю что к чему.

Задача:
Создать программу, которая должна введённые числа от 1 до 9999 переводить в слова, соответствующие этим числам.
Для чисел, не попадающих в заданный диапазон, должно выводиться: "***".

Пример:
0 : ***
1 : один
11 : одиннадцать
89 : восемьдесят девять
589 : пятьсот восемьдесят девять
3576 : три тысячи пятьсот семьдесят шесть
10900 : ***
More Option вне форума Ответить с цитированием
Старый 17.06.2014, 00:06   #2
VladimirVB
Форумчанин
 
Аватар для VladimirVB
 
Регистрация: 12.10.2008
Сообщений: 131
Стрелка

https://yadi.sk/d/9atLhQNvTc2Ss
Ссылка на экселевский файл в котором при помощи функций решается данная задача. Твоя задача разобраться с этим файлом и перевести на C#. Хотел сам это сделать, но слишком монотонная работа.
VladimirVB вне форума Ответить с цитированием
Старый 20.06.2014, 07:52   #3
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Общая идея такова: для начала вам нужно разбить число на цифры:
Код:
uint n = 1234;
uint rightDigit = 1234 % 10; // Остаток от деления на 10 - число 4
n /= 10; // Теперь n == 123, можно продолжать
Затем нужно по полученным цифрам получить их текстовый эквивалент. Если это была самая правая цифра - по правилам для единиц, если вторая справа - по правилам десятков, затем сотен и тысяч. То есть - вызвать соответствующую функцию.

Поскольку тут всего четыре цифры, я бы без лишних сложностей написал бы:
Код:
получить правую цифру // как выше
вызвать функцию для единиц - получить строкуЕдиниц
выкинуть правую цифру // как выше
если осталось ненулевое число, то
получить нынешнюю правую цифру
вызвать функцию для десятков - получить строкуДесятков
опять выкинуть правую цифру
если ненулевое число, то
получить правую цифру
вызвать функцию для сотен - строкаСотен
// И еще раз для тысяч
Важно только отдельно обработать ситуацию с числами 10-19. Перед тем, как начать, нужно сделать проверку, что последние две цифры (остаток от деления на 100) не лежат в этом диапазоне.

Если все же лежат - вместо блока "строкаЕдиниц-строкаДесятков" сразу вызываем функцию для таких "неправильных" чисел, после чего откидываем сразу последние две цифры (делим на 100) и обрабатываем сотни.

Функции выглядят примерно таким образом (пример для десятков):
Код:
public static string Hundreds(uint digit)
{
switch (digit)
 {
 case 1: return "сто";
 case 2: return "двести";
 case 3: return "триста";
 case 4: return "четыреста";
 case 5: return "пятьсот";
 case 6: return "шестьсот";
 case 7: return "семьсот";
 case 8: return "восемьсот";
 case 9: return "девятьсот";
 case 0: return "";
 }
}
Для тысяч еще понадобится отдельная проверка на падеж:
Код:
public static string ThousandsWord(uint digit)
{
switch (digit)   // хотя, учитывая, что тут всего три варианта - можно обойтись if/else
 {
 case 1: return "тысяча";
 case 2: case 3: case 4: return "тысячи";
 case 5: case 6: case 7: case 8: case 9: return "тысяч";
 }
}
После того, как вы получите очередную текстовую строку - добавляйте ее в начало строки-результата (тогда, например, не придется для альтернативы "10-19"-"20-99" в разных случаях в конце выбирать - одну или две строки выводить).

Ну и, кажется, все. Реализовать алгоритм, думаю, будет нетрудно.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 20.06.2014, 07:56   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

http://www.programmersforum.ru/showt...415#post960415
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2022, 21:51   #5
Анаболик
Новичок
Джуниор
 
Регистрация: 23.10.2022
Сообщений: 2
По умолчанию

Гром, Подскажите, пожалуйста подробнее, я совсем зелёный, в программировании всего 3 недели учусь, как нужно задавать вывод текста? Вот я задал int x добустим число, которое вводится в консоль, потом я ввожу 2 вспомогательные переменные для правой и левой цифр(int Lefr = x/10; int right = x%10, таким образом вводя двухзначное число, компилятор раскидает х по переменным Left и right, как мне потом их этих двух получить число, записанное словами? По сути задача у меня такая же:

На вход программы поступает целое положительное число, принадлежащее интервалу [1; 99].

Программа должна сформировать строку - текстовое описание введенного числа.

Пример:

ВХОД: 12. ВЫХОД: двенадцать.

ВХОД: 47. ВЫХОД: сорок семь.

Регистр символов в выходной строке специально можно не настраивать.

Программа должна проверять входное число на корректность.

Для решения задачи используйте оператор выбора switch (и другие операторы, в случае необходимости).

Последний раз редактировалось Анаболик; 23.10.2022 в 21:53. Причина: Не написал какой используется ЯП
Анаболик вне форума Ответить с цитированием
Старый 23.10.2022, 21:53   #6
Анаболик
Новичок
Джуниор
 
Регистрация: 23.10.2022
Сообщений: 2
По умолчанию

Язык C#
Анаболик вне форума Ответить с цитированием
Старый 23.10.2022, 23:05   #7
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Лет через 8 ответит.
macomics вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевести числа Ksana Alex Помощь студентам 1 14.11.2013 17:26
Создать программу,имеющая процедуру,кторая в производном текстовом файле,которая имеет слова и числа,изменяющая все числа числа,ме Fingergod Паскаль, Turbo Pascal, PascalABC.NET 0 13.12.2012 20:08
Перевести из 16-го числа в дробное десятичное Skail Общие вопросы Delphi 3 29.04.2012 09:31
не могу понять как перевести слова в паскале dimass68 Помощь студентам 5 19.04.2012 18:47