Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
4 / 4 / 4
Регистрация: 03.01.2012
Сообщений: 112

Записать число русскими словами

03.11.2013, 21:05. Показов 4274. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Вот условие:
Дано натуральное число n≤1000. Записать русскими словами (семнадцать, три, тысяча и т. д.).

есть код на Паскале, а вот переделать его в с++ не получается:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
uses crt;
var st:string;
    n:integer;
begin
repeat
write('n = ');
readln(n);
until (n>0)and(n<=1000);
case n of
1000:st:='одна тысяча';
else
 begin
  st:='';
  case n div 100 of
  1:st:='сто';
  2:st:='двести';
  3:st:='триста';
  4:st:='четыреста';
  5:st:='пятьсот';
  6:st:='шестьсот';
  7:st:='семьсот';
  8:st:='восемьсот';
  9:st:='девятьсот';
  end;
  case n mod 100 div 10 of
  2:st:=st+' двадцать';
  3:st:=st+' тридцать';
  4:st:=st+' сорок';
  5:st:=st+' пятьдесят';
  6:st:=st+' шестьдесят';
  7:st:=st+' семьдесят';
  8:st:=st+' восемьдесят';
  9:st:=st+' девяносто';
  end;
  case n mod 100 of
  10:st:=st+' десять';
  11:st:=st+' одиннадцать';
  12:st:=st+' двенадцать';
  13:st:=st+' тринадцать';
  14:st:=st+' четырнадцать';
  15:st:=st+' пятнадцать';
  16:st:=st+' шестнадцать';
  17:st:=st+' семнадцать';
  18:st:=st+' восемнадцать';
  19:st:=st+' девятнадцать';
  else
   case n mod 10 of
   1:st:=st+' один';
   2:st:=st+' два';
   3:st:=st+' три';
   4:st:=st+' четыре';
   5:st:=st+' пять';
   6:st:=st+' шесть';
   7:st:=st+' семь';
   8:st:=st+' восемь';
   9:st:=st+' девять';
   end;
  end;
 end;
end;
writeln(st);
readln;
end.
Как я понял, в с++ нельзя так к строке прибавить кусок текста, да и с алгоритмом у меня туго, не получается оперировать остатками. Помогите, пожалуйста, разобраться!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2013, 21:05
Ответы с готовыми решениями:

Напечатать число русскими словами
дано натуральное число n. Напечатать это число русскими словами (сто пять, двести сорок один...)

Напечатать данное натуральное число русскими словами
Дано натуральное число n (n&lt;=1000). Напечатать это число русскими словами (тринадцать, сто пять, двести сорок один, тысяча и т.д) ...

Записать число словами
У меня такой вопрос: Как целое число до 10 000 записать словами??? например вводим с клавиатуры 123 а она выводит &quot;сто двадцать...

5
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
03.11.2013, 21:07
эм...с++? вы уверены что вы там где должны быть?))
1
4 / 4 / 4
Регистрация: 03.01.2012
Сообщений: 112
03.11.2013, 21:11  [ТС]
Цитата Сообщение от dzrkot Посмотреть сообщение
эм...с++? вы уверены что вы там где должны быть?))
но ведь я просто привел пример реализации данной программы в Паскале. думаю в разделе Паскаля мне вряд ли помогут перевести на с++)
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
03.11.2013, 21:48
Цитата Сообщение от Slowpok Посмотреть сообщение
но ведь я просто привел пример реализации данной программы в Паскале. думаю в разделе Паскаля мне вряд ли помогут перевести на с++)
пардон, что-то я сегодня не дочитывае некоторые комментарии к заданиям и делаю выводы...
сейчас напишу вам эту шляпу

Добавлено через 18 минут
надеюсь сам допишешь

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cmath>
using namespace std;
int main()
{
    int value;
    string _100;
srand(time(0));
value=0+rand()%999;
cout<<value<<endl;
 
    switch (value/100)
    {
    case 9:
    _100="devatsot";
    cout<<_100;
    break;
     case 8:
    _100="vosemsot";
    cout<<_100;
    break;
        case 7:
    _100="semsot";
    cout<<_100;
    break;
        case 6:
    _100="westsot";
    cout<<_100;
    break;
        case 5:
    _100="p9tsot";
    cout<<_100;
    break;
        case 4:
    _100="4etiresta ";
    cout<<_100;
    break;
    }
    cout<<" ";
    switch ((value%100)/10)
    {
    case 9:
    _100="dev9nosto";
    cout<<_100;
    break;
     case 8:
    _100="vosemdes9t";
    cout<<_100;
    break;
        case 7:
    _100="semdes9t";
    cout<<_100;
    break;
        case 6:
    _100="westdes9t";
    cout<<_100;
    break;
        case 5:
    _100="p9tdes9t";
    cout<<_100;
    break;
        case 4:
    _100="sorok";
    cout<<_100;
    break;
    }
 
    switch (value%10)
    {
    case 9:
    break;
    }
return 0;
}
1
4 / 4 / 4
Регистрация: 03.01.2012
Сообщений: 112
03.11.2013, 21:51  [ТС]
dzrkot, конечно, спасибо огромное!)
0
30 / 30 / 21
Регистрация: 19.02.2011
Сообщений: 171
03.11.2013, 21:51
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <conio.h>
#include <string>
#include <Windows.h>
 
std::string towords(int numb);
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int numb=100500;
    std::string str=towords(numb);
    std::cout<<numb<<" = "<<str;
    
    system("PAUSE");
    return EXIT_SUCCESS;
}
 
std::string towords(int numb){
    //массив, для определения разряда, в котором находимся(сотни,десятки,еденицы...)
    int osn[11]={0,1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
 
    //массив оснований
    std::string basis[11][10]={
        {"","","","","","","","","",""},
        {"","один","два","три","четыре","пять","шесть","семь","восемь","девять"},
        {"","десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто"},
        {"","сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот"},
        {"","одна","две","три","четыре","пять","шесть","семь","восемь","девять"},
        {"","десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто"},
        {"","сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот"},
        {"","один","два","три","четыре","пять","шесть","семь","восемь","девять"},
        {"","десять","двадцать","тридцать","сорок","пятьдесят","шестьдесят","семьдесят","восемьдесят","девяносто"},
        {"","сто","двести","триста","четыреста","пятьсот","шестьсот","семьсот","восемьсот","девятьсот"},
        {"","один","два","три ","четыре","пять","шесть","семь","восемь","девять"}};
 
    //массив окончаний
    std::string termination[10][10]={
        {"","","","тысяч","","","миллионов","","","миллиардов"},
        {"","","","тысяча","","","миллион","","","миллиард"},
        {"","","","тысячи","","","миллиона","","","миллиарда"},
        {"","","","тысячи","","","миллиона","","","миллиарда"},
        {"","","","тысячи","","","миллиона","","","миллиарда"},
        {"","","","тысяч","","","миллионов","","","миллиардов"},
        {"","","","тысяч","","","миллионов","","","миллиардов"},
        {"","","","тысяч","","","миллионов","","","миллиардов"},
        {"","","","тысяч","","","миллионов","","","миллиардов"},
        {"","","","тысяч","","","миллионов","","","миллиардов"}};
 
    std::string dec[10]={"десять","одиннадцать","двенадцать","тринадцать","четырнадцать","пятнадцать","шестнадцать","семнадцать","восемнадцать","девятнадцать"};
    std::string result;
 
    if (!numb){
        result="ноль";
        return result;
    }
    int n1=numb;
    int cnt=0;
 
    //подсчет количесива цифр в числе
    while (numb){
        numb/=10;
        ++cnt;
    }
    int celoe=0;
 
    //перевод
    while (n1){
        if (!((cnt+1) % 3)){
            if ((n1/osn[cnt])==1){
                    n1%=osn[cnt];
                    --cnt;
                    celoe=n1/osn[cnt];
                    n1%=osn[cnt];
                    result+=dec[celoe];
                --cnt;
                if (!(cnt % 3))
                    result+=" "+termination[0][cnt]+" ";
            }
            if (!cnt) break;
        }
        celoe=n1/osn[cnt];
        n1%=osn[cnt];
        result+=basis[cnt][celoe]+" ";
        --cnt;
        if (!(cnt % 3))
            result+=termination[celoe][cnt]+" ";
    }
 
    return result;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2013, 21:51
Помогаю со студенческими работами здесь

Проблема с русскими словами
Всем привет! Пытался реализовать небольшую базу данных с помощью массивов. Когда ввожу логины на английском (lesha, admin) то все работает...

Имена переменных русскими словами
Попробовал объявить переменную русским словом, присвоить значение и напечатать. Всё получилось. А почему в учебниках пишут, что можно...

Как заполнить массив строк с консоли русскими словами?
А после заполнения вывести число повторений каждого слова.

Записать введённую с клавиатуры цифру от 0 до 10 словами на английском языке
Записать введённую с клавиатуры цифру от 0 до 10 словами на английском языке.

Записать введённую с клавиатуры цифру от 0 до 10 словами на английском языке
Записать введённую с клавиатуры цифру от 0 до 10 словами на английском языке Еще раз создадите эту тему (в третий раз) - карточка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru