0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 43
1

Задано некоторое натуральное число, не превышающее миллиона. Требуется записать его словами

28.06.2016, 11:16. Показов 1352. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задано некоторое натуральное число, не превышающее миллиона. Требуется записать его словами
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.06.2016, 11:16
Ответы с готовыми решениями:

Задано некоторое натуральное число, требуется вывести весь текст словами
В задаче предполагается, что все данные хранятся в некотором текстовом файле. Результат следует...

Задано натуральное число. Записать его в обратном порядке
Задано натуральное число. Записать его в обратном порядке. Например, 12345 должно превратиться в...

Записать натуральное число А оканчивающееся на цифру 5 , не превышающее 4*10-в5 степени
Ребят , надо записать натуральное число А оканчивающееся на цифру 5 , не превышающее 4*10-в5...

Задано натуральное число. Создать стек с его цифр.
У меня такое задание: Задано натуральное число. Создать стек с его цифр. Я не понимаю что...

7
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
28.06.2016, 12:41 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Например так.
Pascal
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
uses crt;
var st:string;
    n,i:longint;
    c:array[1..2]of integer;{массив тысяч(0-999) и единиц(0-999)}
    s:array[1..3]of string;{массив склонений тысяч}
begin
clrscr;
s[1]:='тысяча';
s[2]:='тысячи';
s[3]:='тысяч';
repeat
write('Введите число от 0 до 1 000 000 n=');
readln(n);
until(n>=0)and(n<=1000000);
if n=1000000 then st:='один миллион'
else if n=0 then st:='ноль'
else
 begin
  st:='';
  c[1]:=n div 1000;
  c[2]:=n mod 1000;
  for i:=1 to 2 do
  if c[i]<>0 then
   begin
    if c[i] div 100<>0 then
    case c[i] div 100 of
    1:st:=st+'сто';
    2:st:=st+'двести';
    3:st:=st+'триста';
    4:st:=st+'четыреста';
    5:st:=st+'пятьсот';
    6:st:=st+'шестьсот';
    7:st:=st+'семьсот';
    8:st:=st+'восемьсот';
    9:st:=st+'девятьсот';
    end;
  if (c[i] mod 100) div 10<>1 then
   begin
    case (c[i] mod 100) div 10 of
    2:st:=st+' двадцать';
    3:st:=st+' тридцать';
    4:st:=st+' сорок';
    5:st:=st+' пятьдесят';
    6:st:=st+' шестьдесят';
    7:st:=st+' семьдесят';
    8:st:=st+' восемьдесят';
    9:st:=st+' девяносто';
    end;
    case c[i] mod 10 of
    1:if i=1 then st:=st+' одна' else st:=st+' один';
    2:if i=1 then st:=st+' две' else st:=st+' два';
    3:st:=st+' три';
    4:st:=st+' четыре';
    5:st:=st+' пять';
    6:st:=st+' шесть';
    7:st:=st+' семь';
    8:st:=st+' восемь';
    9:st:=st+' девять';
    end;
   end
  else
   case (c[i] mod 100) of
   10:st:=st+' десять';
   11:st:=st+' одиннадцать';
   12:st:=st+' двенадцать';
   13:st:=st+' тринадцать';
   14:st:=st+' четырнадцать';
   15:st:=st+' пятндцать';
   16:st:=st+' шестнадцать';
   17:st:=st+' семнадцать';
   18:st:=st+' восемнадцать';
   19:st:=st+' девятнадцать';
   end;
   if i=1 then
    begin
     if(c[i] mod 100>=10) and (c[i] mod 100<=19) then st:=st+' '+s[3]+' '
     else
     case c[i] mod 10 of
     1:st:=st+' '+s[1]+' ';
     2..4:st:=st+' '+s[2]+' ';
     5..9,0:st:=st+' '+s[3]+' ';
     end;
    end;
  end;
 end;
writeln(st);
readln;
end.
1
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 43
29.06.2016, 09:40  [ТС] 3
А можете объяснить что делает каждая строка?
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
29.06.2016, 09:42 4
Ну насчет каждой строки Вы это загнули или совсем по нолям, тогда и смысла нет писать.
Напишите что непонятно.
1
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 43
29.06.2016, 10:40  [ТС] 5
что это означает
c[1]:=n div 1000;
c[2]:=n mod 1000;
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
29.06.2016, 11:40 6
Лучший ответ Сообщение было отмечено zenya19981 как решение

Решение

Например число=998253
тогда c[1]=998 c[2]=253
1
0 / 0 / 1
Регистрация: 27.04.2016
Сообщений: 43
29.06.2016, 23:31  [ТС] 7
Можно пожалуйста краткий метод этой программы?
0
Почетный модератор
64288 / 47587 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
30.06.2016, 08:19 8
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Не знаю что за краткий метод, пишите сами
Pascal
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
//Заводим 2 массива
c:array[1..2]of integer;{массив тысяч(0-999) и единиц(0-999)}
s:array[1..3]of string;{массив склонений тысяч}
//заполняем массив S
s[1]:='тысяча';
s[2]:='тысячи';
s[3]:='тысяч';
//вводим число от 0 до 1 миллиона с проверкой диапазона
repeat
write('Введите число от 0 до 1 000 000 n=');
readln(n);
until(n>=0)and(n<=1000000);
//если 1000000 или ноль то сразу пишем
if n=1000000 then st:='один миллион'
else if n=0 then st:='ноль'
else //иначе
 begin
  st:='';
  c[1]:=n div 1000; //выделяем тысячи
  c[2]:=n mod 1000; //выделяем единицы
  for i:=1 to 2 do //переволим тысячи и единицы в число прописью
  if c[i]<>0 then
   begin
    if c[i] div 100<>0 then //если не меньше 100
    case c[i] div 100 of //делим на 100, определяем первую цифру
    1:st:=st+'сто'; //переводим в пропись
    2:st:=st+'двести';
    3:st:=st+'триста';
    4:st:=st+'четыреста';
    5:st:=st+'пятьсот';
    6:st:=st+'шестьсот';
    7:st:=st+'семьсот';
    8:st:=st+'восемьсот';
    9:st:=st+'девятьсот';
    end;
  if (c[i] mod 100) div 10<>1 then //определяем вторую цифру
   begin                           //и если не 1 то
    case (c[i] mod 100) div 10 of
    2:st:=st+' двадцать'; //переводим в пропись
    3:st:=st+' тридцать';
    4:st:=st+' сорок';
    5:st:=st+' пятьдесят';
    6:st:=st+' шестьдесят';
    7:st:=st+' семьдесят';
    8:st:=st+' восемьдесят';
    9:st:=st+' девяносто';
    end;
    case c[i] mod 10 of  //определяем третью цифру
    1:if i=1 then st:=st+' одна' else st:=st+' один'; //подбираем слово
    2:if i=1 then st:=st+' две' else st:=st+' два';   //для тысяч и единиц
    3:st:=st+' три';  //для цифр >1 одинаково
    4:st:=st+' четыре';
    5:st:=st+' пять';
    6:st:=st+' шесть';
    7:st:=st+' семь';
    8:st:=st+' восемь';
    9:st:=st+' девять';
    end;
   end
  else  //если вторая цифра=1
   case (c[i] mod 100) of //если 2 последние цифры 11..19
   10:st:=st+' десять'; //переводим в пропись
   11:st:=st+' одиннадцать';
   12:st:=st+' двенадцать';
   13:st:=st+' тринадцать';
   14:st:=st+' четырнадцать';
   15:st:=st+' пятндцать';
   16:st:=st+' шестнадцать';
   17:st:=st+' семнадцать';
   18:st:=st+' восемнадцать';
   19:st:=st+' девятнадцать';
   end;
   if i=1 then  //если тысячи
    begin
     //если 11..19 то + 'тысяч'
     if(c[i] mod 100>=10) and (c[i] mod 100<=19) then st:=st+' '+s[3]+' '
     else //иначе
     case c[i] mod 10 of
     1:st:=st+' '+s[1]+' ';//1=тысяча
     2..4:st:=st+' '+s[2]+' ';//2..4=тысячи
     5..9,0:st:=st+' '+s[3]+' ';//5..9=тысяч
     end;
    end;
  end;
 end;
writeln(st);//выводим ответ
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.06.2016, 08:19
Помогаю со студенческими работами здесь

Задано натуральное число n. Найти сумму его цифр
Заданное натуральное число n. Найти сумму его цифр.

Задано натуральное число n. Найти колличество его четных чисел
Привет всем. Задача в макросах Word-а. Задано натуральное число n. Найти колличество его четных...

Задано натуральное число n. Необходимо перевести его в k-ичную систему счисления
Задано натуральное число n. Необходимо перевести его в k-ичную систему счисления и найти разность...

Задано натуральное число, разместить памяти последовательно все его цифры с помощью указателя
Задано натуральное число, разместить их памяти последовательно все его цифры с помощью указателя.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru