Записать число русскими словами - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дано натуральное число n (n <= 1000). Записать это число русскими словами (семнадцать, двести пятьдесят три, тысяча и т. д. ).
Листинг программы
  1. #include <iostream>
  2. #include <string.h>
  3. using namespace std;
  4. int main() {
  5. int n;
  6. string s;
  7. cin >> n;
  8. if(n==1000){
  9. s="тысяча";
  10. }else{
  11. s="";
  12. switch(n/100){
  13. case 1:s="сто";break;
  14. case 2:s="двести";break;
  15. case 3:s="триста";break;
  16. case 4:s="четыреста";break;
  17. case 5:s="пятьсот";break;
  18. case 6:s="шестьсот";break;
  19. case 7:s="семьсот";break;
  20. case 8:s="восемьсот";break;
  21. case 9:s="девятьсот";break;
  22. }
  23. if(n >= 100 && n%100 >= 10){ s+=" ";}
  24. switch((n%100)/10){
  25. case 2:s=s+"двадцать";break;
  26. case 3:s=s+"тридцать";break;
  27. case 4:s=s+"сорок";break;
  28. case 5:s=s+"пятьдесят";break;
  29. case 6:s=s+"шестьдесят";break;
  30. case 7:s=s+"семьдесят";break;
  31. case 8:s=s+"восемьдесят";break;
  32. case 9:s=s+"девяносто";break;
  33. }
  34. if(n%100>=10&n%100<20){
  35. switch(n%100){
  36. case 10:s=s+"десять";break;
  37. case 11:s=s+"одиннадцать";break;
  38. case 12:s=s+"двенадцать";break;
  39. case 13:s=s+"тринадцать";break;
  40. case 14:s=s+"четырнадцать";break;
  41. case 15:s=s+"пятнадцать";break;
  42. case 16:s=s+"шестнадцать";break;
  43. case 17:s=s+"семнадцать";break;
  44. case 18:s=s+"восемнадцать";break;
  45. case 19:s=s+"девятнадцать";break;
  46. }
  47. }else{
  48. if(n%10 != 0 && (n % 100 >= 20 || n >= 100)){ s+=" ";}
  49. switch(n%10){
  50. case 1:s=s+"один";break;
  51. case 2:s=s+"два";break;
  52. case 3:s=s+"три";break;
  53. case 4:s=s+"четыре";break;
  54. case 5:s=s+"пять";break;
  55. case 6:s=s+"шесть";break;
  56. case 7:s=s+"семь";break;
  57. case 8:s=s+"восемь";break;
  58. case 9:s=s+"девять";break;
  59. }
  60. }
  61. }
  62. cout << s << endl;
  63. return 0;
  64. }

Решение задачи: «Записать число русскими словами»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main() {
  5. int n;
  6. char s[100];
  7. scanf("%d", &n);
  8. if(n==1000){
  9.     strcpy(s, "тысяча");
  10.     }else{
  11.     s[0]=0;
  12.     switch(n/100){
  13.         case 1:strcpy(s, "сто");break;
  14.         case 2:strcpy(s, "двести");break;
  15.         case 3:strcpy(s, "триста");break;
  16.         case 4:strcpy(s, "четыреста");break;
  17.         case 5:strcpy(s, "пятьсот");break;
  18.         case 6:strcpy(s, "шестьсот");break;
  19.         case 7:strcpy(s, "семьсот");break;
  20.         case 8:strcpy(s, "восемьсот");break;
  21.         case 9:strcpy(s, "девятьсот");break;
  22.     }
  23.     switch((n%100)/10){
  24.         case 2:strcat(s, " двадцать");break;
  25.         case 3:strcat(s, " тридцать");break;
  26.         case 4:strcat(s, " сорок");break;
  27.         case 5:strcat(s, " пятьдесят");break;
  28.         case 6:strcat(s, " шестьдесят");break;
  29.         case 7:strcat(s, " семьдесят");break;
  30.         case 8:strcat(s, " восемьдесят");break;
  31.         case 9:strcat(s, " девяносто");break;
  32.     }
  33.     if(n%100>=10&n%100<20){
  34.         switch(n%100){
  35.             case 10:strcat(s, " десять");break;
  36.             case 11:strcat(s, " одиннадцать");break;
  37.             case 12:strcat(s, " двенадцать");break;
  38.             case 13:strcat(s, " тринадцать");break;
  39.             case 14:strcat(s, " четырнадцать");break;
  40.             case 15:strcat(s, " пятнадцать");break;
  41.             case 16:strcat(s, " шестнадцать");break;
  42.             case 17:strcat(s, " семнадцать");break;
  43.             case 18:strcat(s, " восемнадцать");break;
  44.             case 19:strcat(s, " девятнадцать");break;
  45.         }
  46.         }else{
  47.             switch(n%10){
  48.             case 1:strcat(s, " один");break;
  49.             case 2:strcat(s, " два");break;
  50.             case 3:strcat(s, " три");break;
  51.             case 4:strcat(s, " четыре");break;
  52.             case 5:strcat(s, " пять");break;
  53.             case 6:strcat(s, " шесть");break;
  54.             case 7:strcat(s, " семь");break;
  55.             case 8:strcat(s, " восемь");break;
  56.             case 9:strcat(s, " девять");break;
  57.             }
  58.         }
  59.     }
  60. printf("%s\n", s);
  61. return 0;
  62. }

Объяснение кода листинга программы

В этом коде на языке C представлена функция, которая принимает целое число от 1 до 999 и выводит его русское словесное представление. Список действий, выполняемых в коде:

  1. Объявляются две переменные: n типа int (целое число) и s типа char с размером 100 символов.
  2. С помощью функции scanf в переменную n считывается целое число, которое затем проверяется на равенство 1000.
  3. Если число равно 1000, то в переменную s записывается слово тысяча.
  4. В противном случае, в s записывается ноль, который необходим для корректной работы последующих операций со строками.
  5. Далее, в зависимости от значения n от 1 до 9, в s записывается соответствующее слово от сто до девятьсот.
  6. Затем, в зависимости от значения n от 10 до 90, в s добавляется слово, обозначающее количество от десять до девяносто.
  7. Если n находится в диапазоне от 100 до 199, то в s добавляется слово, обозначающее десятки от десять до девятнадцать.
  8. В противном случае, в s добавляется слово, обозначающее единицы от один до девять.
  9. В конце функция выводит результат в консоль. Код довольно сложный из-за большого количества условий, но он выполняет свою задачу и может быть использован для обучения основам программирования и работы со строками.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы