Задача Преобразовать число к прописному текстовому виду, например
2141 — Две тысячи сто сорок один.
Указанная задача возникает при необходимости вывести сумму прописью, а также может использоваться для составления капчи для сайтов (например, в форме комментариев ниже).
Перед решением задачи необходимо определиться с диапазоном ввода числа. Предположим, что вводимое число будет состоять из 4 разрядов:
Для решения задачи необходимо разбить число на значащие разряды и каждому разряду поставить в соответствие некоторую текстовую строку. При этом необходимо учитывать, что числа в диапазоне от 10 до 20 не нужно разделять на десятки и единицы, например
11 — одиннадцать, в то время как
21 — двадцать один.
Реализация на C++
#define _CRT_SECURE_NO_WARNINGS // для использования strcpy()
#include
#include
using namespace std;
void captcha( int num, char *s) // num — число, s — указатель на строку
Числа прописью в Excel быстро и без вспомогательных инструментов!
int position = 0; // позиция в строке
int x[4]; // массив разрядов
int div = 1000; // делитель на разряды
int var = num; // частное от деления
int rest; // остаток от деления
for ( int i = 0; i < 4; i++)
rest = ( int )(var / div);
x[i] = rest;
var = var — rest*div;
div = div / 10;
>
// Тысячи
switch (x[0])
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 ;
default: break ;
>
position = strlen(s);
// Сотни
switch (x[1])
case 1: strcpy(s + position, «сто » ); break ;
case 2: strcpy(s + position, «двести » ); break ;
case 3: strcpy(s + position, «триста » ); break ;
case 4: strcpy(s + position, «четыреста » ); break ;
case 5: strcpy(s + position, «пятьсот » ); break ;
case 6: strcpy(s + position, «шестьсот » ); break ;
case 7: strcpy(s + position, «семьсот » ); break ;
case 8: strcpy(s + position, «восемьсот » ); break ;
case 9: strcpy(s + position, «девятьсот » ); break ;
default: break ;
>
position = strlen(s);
// Десятки
switch (x[2])
case 1:
// Числа от 10 до 19
switch (x[3])
case 0: strcpy(s + position, «десять » ); break ;
case 1: strcpy(s + position, «одиннадцать » ); break ;
case 2: strcpy(s + position, «двенадцать » ); break ;
Число в excel как преобразовать и написать прописью
case 3: strcpy(s + position, «тринадцать » ); break ;
case 4: strcpy(s + position, «четырнадцать » ); break ;
case 5: strcpy(s + position, «пятнадцать » ); break ;
case 6: strcpy(s + position, «шестнадцать » ); break ;
case 7: strcpy(s + position, «семнадцать » ); break ;
case 8: strcpy(s + position, «восемнадцать » ); break ;
case 9: strcpy(s + position, «девятнадцать » ); break ;
>
x[3] = 0;
position = strlen(s);
break ;
case 2: strcpy(s + position, «двадцать » ); break ;
case 3: strcpy(s + position, «тридцать » ); break ;
case 4: strcpy(s + position, «сорок » ); break ;
case 5: strcpy(s + position, «пятьдесят » ); break ;
case 6: strcpy(s + position, «шестьдесят » ); break ;
case 7: strcpy(s + position, «семьдесят » ); break ;
case 8: strcpy(s + position, «восемьдесят » ); break ;
case 9: strcpy(s + position, «девяносто » ); break ;
default: break ;
>
position = strlen(s);
// Единицы
switch (x[3]) case 1: strcpy(s + position, «один » ); break ;
case 2: strcpy(s + position, «два » ); break ;
case 3: strcpy(s + position, «три » ); break ;
case 4: strcpy(s + position, «четыре » ); break ;
case 5: strcpy(s + position, «пять » ); break ;
case 6: strcpy(s + position, «шесть » ); break ;
case 7: strcpy(s + position, «семь » ); break ;
case 8: strcpy(s + position, «восемь » ); break ;
case 9: strcpy(s + position, «девять » ); break ;
default: break ;
>
position = strlen(s);
>
int main()
int m;
srand(time(NULL));
system( «chcp 1251» );
system( «cls» );
char s[80];
for ( int i = 0; i m = rand() % (10000 — 1000) + 1000;
captcha(m, s);
cout >
cin.get();
return 0;
>
Для генерации случайных чисел в диапазоне 1000-9999 используется формула, приведенная здесь.
Результат выполнения
Источник: prog-cpp.ru
Решить в Python 8. Напишите программу, которая вводит целое число, не превышающее 100, и выводит его прописью, например, 21-«двадцать один».
Объявляем функцию number_in_words, которая и обозначает перевод числа в его прописной вид. Далее делаем проверку, передано ли нам число «100», если это так — выводим текст «сто». Также делаем для нуля. Иначе выполняем следующий код.
Регистрируем 3 словаря: 1 — для цифр (numbers_simple), от 1 до 9; 2 — для чисел от 11 до 19; 3 — для десятков. Далее — получаем первую цифру и последнюю цифру числа в переменные digi2 и digi1 соответственно.
Далее, если число меньше 10 — то возвращаем его словесный вид из словаря numbers_simple с помощью get(). Если число находится в десятках (и оно больше либо равно 10), возвращаем это число из словаря teens. Если число находится в интервале от 10 до 20, то возвращаем это число в словесном виде из словаря teens. И для остальных оставшихся чисел мы возвращаем словесный вид его первой цифры через пробел со словесном видом второй цифры. В конце — вызываем этот метод, передав ему введённое целое число с клавиатуры.
Источник: znanijam.net
Написать программа которая вводит целое число и выводит прописью
August 2022 1 15 Report
Напишите программу ,которая вводит целое число ,не превышающее 100,и выводит его прописью,например:21>»Двадцать один»
Answers
var
a,b,c,t,z:integer;
m,k,l:string;
label 1,2,3,4;
begin
writeln (‘Введите число от 1-го до 100’);
repeat read(a) until (a>=0)and(a<=100);
b:=a div 10;
c:=a mod 10;
if a=100 then goto 2;
if a=0 then goto 1;
if (a>9) and (a<20) then goto 4;
case b of
2:m:=’Двадцать ‘;
3:m:=’Тридцать ‘;
4:m:=’Сорок ‘;
5:m:=’Пятьдесят ‘;
6:m:=’Шестдесят ‘;
7:m:=’Семдесят ‘;
8:m:=’Восемьдесят ‘;
9:m:=’Девяносто ‘; end;
case c of
1:k:=’один’;
2:k:=’два’;
3:k:=’три’;
4:k:=’четыре’;
5:k:=’пять’;
6:k:=’шесть’;
7:k:=’семь’;
8:k:=’восемь’;
9:k:=’девять’;
end;
writeln (m,k);
goto 3;
2:writeln (‘Сто’);
goto 3;
1: writeln (‘Ноль’);
goto 3;
4: if a=10 then writeln (‘Десять’);
if a=11 then writeln (‘Одиннадцать’);
if a=12 then writeln (‘Двенадцать’);
if a=13 then writeln (‘Тринадцать’);
if a=14 then writeln (‘Четырнадцать’);
if a=15 then writeln (‘Пятьнадцать’);
if a=16 then writeln (‘Шестнадцать’);
if a=17 then writeln (‘Семнадцать’);
if a=18 then writeln (‘Восемнадцать’);
if a=19 then writeln (‘Девятнадцать’);
3:end.
3 votes Thanks 9
gimazetdinov20 Это правильно??
Relhem А нет. Не выводит числа от 10-и до 20-и. Сейчас подправлю.
Relhem Подправил. Немного на разумно, конечно, но в целом, это не 100 условных операторов XD.
gimazetdinov20 щас то нормально?
Relhem Сейчас отлично, уверяю 🙂
More Questions From This User See All
gimazetdinov20 August 2022 | 0 Ответы
arsen dernul karinu za kosichkukarina stuknula arsena po golove uchebnikomiz kot
gimazetdinov20 July 2022 | 0 Ответы
chto eto oznachaet2bd39973494aa10c802f412d8c227396 270
gimazetdinov20 July 2022 | 0 Ответы
pomogite plz ochen budu radsochinenie po literature na temu chto znachit byt schas
gimazetdinov20 July 2022 | 0 Ответы
mama kupila svoi detyam konfetesli ona razdast svoim detyam po dve konfetyto tri
gimazetdinov20 July 2022 | 0 Ответы
semya maksimovyh sostoit iz papymamy i chetveryh detejsrednij rost detej ravendbb7478e6a6b4c21f47b34b00ddb82ab 49819
gimazetdinov20 August 2021 | 0 Ответы
Источник: scholar.tips