Дано натуральное число [latex]n (n <= 1000)[/latex]. Записать это число русскими словами (семнадцать, двести пятьдесят три, тысяча и т. д. ).
Ход решения очень простой, читаем наше [latex]n[/latex] в тиме [latex]integer[/latex] и проверяем, если оно равно [latex]1000[/latex], то выводим ответ «тысяча», иначе берем число по модулю [latex]100[/latex] и присваиваем(дописываем) строке [latex]s[/latex] значение уже заранее описанного для [latex]n mod 100[/latex] ответа. Дальше проверяем так же по десяткам, здесь есть маленький нюанс, для чисел от [latex]10[/latex] до [latex]19[/latex] — эти числа имеют собственное названием, если же [latex](n mod 100)/10[/latex] от [latex]2[/latex] до [latex]9[/latex], то дописываем в [latex]s[/latex] соответствующее значение. И последний шаг — это запись едениц, мы берем все число по модулю [latex]10[/latex] ([latex]n mod 10[/latex]) и дописываем то, что осталось.
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 |
#include <iostream> #include <string.h> using namespace std; int main() { int n; string s; cin >> n; if(n==1000){ s="тысяча"; }else{ s=""; switch(n/100){ case 1:s="сто";break; case 2:s="двести";break; case 3:s="триста";break; case 4:s="четыреста";break; case 5:s="пятьсот";break; case 6:s="шестьсот";break; case 7:s="семьсот";break; case 8:s="восемьсот";break; case 9:s="девятьсот";break; } if(n >= 100 && n%100 >= 10){ s+=" ";} switch((n%100)/10){ case 2:s=s+"двадцать";break; case 3:s=s+"тридцать";break; case 4:s=s+"сорок";break; case 5:s=s+"пятьдесят";break; case 6:s=s+"шестьдесят";break; case 7:s=s+"семьдесят";break; case 8:s=s+"восемьдесят";break; case 9:s=s+"девяносто";break; } if(n%100>=10&n%100<20){ switch(n%100){ case 10:s=s+"десять";break; case 11:s=s+"одиннадцать";break; case 12:s=s+"двенадцать";break; case 13:s=s+"тринадцать";break; case 14:s=s+"четырнадцать";break; case 15:s=s+"пятнадцать";break; case 16:s=s+"шестнадцать";break; case 17:s=s+"семнадцать";break; case 18:s=s+"восемнадцать";break; case 19:s=s+"девятнадцать";break; } }else{ if(n%10 != 0 && (n % 100 >= 20 || n >= 100)){ s+=" ";} switch(n%10){ case 1:s=s+"один";break; case 2:s=s+"два";break; case 3:s=s+"три";break; case 4:s=s+"четыре";break; case 5:s=s+"пять";break; case 6:s=s+"шесть";break; case 7:s=s+"семь";break; case 8:s=s+"восемь";break; case 9:s=s+"девять";break; } } } cout << s << endl; return 0; } |