Записать число русскими словами - 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 и выводит его русское словесное представление. Список действий, выполняемых в коде:

  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
Похожие ответы