Записать число русскими словами - C (СИ)
Формулировка задачи:
Дано натуральное число n (n <= 1000). Записать это число русскими словами (семнадцать, двести пятьдесят три, тысяча и т. д. ).
#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; }
Решение задачи: «Записать число русскими словами»
textual
Листинг программы
#include <stdio.h> #include <string.h> int main() { int n; char s[100]; scanf("%d", &n); if(n==1000){ strcpy(s, "тысяча"); }else{ s[0]=0; switch(n/100){ case 1:strcpy(s, "сто");break; case 2:strcpy(s, "двести");break; case 3:strcpy(s, "триста");break; case 4:strcpy(s, "четыреста");break; case 5:strcpy(s, "пятьсот");break; case 6:strcpy(s, "шестьсот");break; case 7:strcpy(s, "семьсот");break; case 8:strcpy(s, "восемьсот");break; case 9:strcpy(s, "девятьсот");break; } switch((n%100)/10){ case 2:strcat(s, " двадцать");break; case 3:strcat(s, " тридцать");break; case 4:strcat(s, " сорок");break; case 5:strcat(s, " пятьдесят");break; case 6:strcat(s, " шестьдесят");break; case 7:strcat(s, " семьдесят");break; case 8:strcat(s, " восемьдесят");break; case 9:strcat(s, " девяносто");break; } if(n%100>=10&n%100<20){ switch(n%100){ case 10:strcat(s, " десять");break; case 11:strcat(s, " одиннадцать");break; case 12:strcat(s, " двенадцать");break; case 13:strcat(s, " тринадцать");break; case 14:strcat(s, " четырнадцать");break; case 15:strcat(s, " пятнадцать");break; case 16:strcat(s, " шестнадцать");break; case 17:strcat(s, " семнадцать");break; case 18:strcat(s, " восемнадцать");break; case 19:strcat(s, " девятнадцать");break; } }else{ switch(n%10){ case 1:strcat(s, " один");break; case 2:strcat(s, " два");break; case 3:strcat(s, " три");break; case 4:strcat(s, " четыре");break; case 5:strcat(s, " пять");break; case 6:strcat(s, " шесть");break; case 7:strcat(s, " семь");break; case 8:strcat(s, " восемь");break; case 9:strcat(s, " девять");break; } } } printf("%s\n", s); return 0; }
Объяснение кода листинга программы
В этом коде на языке C представлена функция, которая принимает целое число от 1 до 999 и выводит его русское словесное представление. Список действий, выполняемых в коде:
- Объявляются две переменные:
n
типа int (целое число) иs
типа char с размером 100 символов. - С помощью функции
scanf
в переменнуюn
считывается целое число, которое затем проверяется на равенство 1000. - Если число равно 1000, то в переменную
s
записывается словотысяча
. - В противном случае, в
s
записывается ноль, который необходим для корректной работы последующих операций со строками. - Далее, в зависимости от значения
n
от 1 до 9, вs
записывается соответствующее слово отсто
додевятьсот
. - Затем, в зависимости от значения
n
от 10 до 90, вs
добавляется слово, обозначающее количество отдесять
додевяносто
. - Если
n
находится в диапазоне от 100 до 199, то вs
добавляется слово, обозначающее десятки отдесять
додевятнадцать
. - В противном случае, в
s
добавляется слово, обозначающее единицы отодин
додевять
. - В конце функция выводит результат в консоль. Код довольно сложный из-за большого количества условий, но он выполняет свою задачу и может быть использован для обучения основам программирования и работы со строками.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д