Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.01.2015
Сообщений: 5
1

По введённому числу напечатать все натуральные числа X русскими буквами

22.04.2015, 22:01. Показов 1869. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Данную программу я уже больше месяца пытаюсь написать, но ничего не понимаю. В общем, по введённому числу N (1-100) программа должна напечатать все натуральные числа X русскими буквами. Например, для числа 4 программа должна напечатать "один", так как в слове "один" четыре буквы, для числа 9 - "сорок пять". Программа должна быть написанной на циклах. Надеюсь на вашу поддержку, а то эти циклы уже бесят.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2015, 22:01
Ответы с готовыми решениями:

Напечатать все натуральные числа X русскими буквами
Составьте программу, которая по введенному вами числу N (от 1 до 100) напечатает все натуральные...

Напечатать все чётные натуральные числа от A до B по убыванию
Составьте программу, которая печатает все чётные натуральные числа от A до B по убыванию (A>B).

Найти все трёхзначные натуральные числа, сумма цифр которых равна заданному числу N
Помогите, пожалуйста, решить задачу...Третий час бьюсь. Вот более полный текст: Вот код,...

Вывести все трехзначные натуральные числа, сумма цифр которых равна заданному числу (через repeat)
Написать программу,которая выводит все трех значаные натуральные числа,сумма цифр которых равна...

1
5079 / 2651 / 2349
Регистрация: 10.12.2014
Сообщений: 10,028
23.04.2015, 07:49 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Условие запутанное и не полное.
Какое ограничение должно быть для чисел X?
Если до 100, то это одно… А для 1000 уже совсем другое!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Предположим, что для X действует то же ограничение, что и для N.
Тогда давай напишем такую программу вместе.

Во-первых: Необходимо создать 3 массива, которые будут отвечать за числительные.
Первый массив — для формирования единиц.
Второй — для формирования десятков.
И ещё один для числительных от 11 до 19, т.к. эти числительные пишутся одним словом.

Получилось вот так:
Pascal
1
2
3
4
5
6
7
8
9
const
  E : array [1..9] of String = ('один', 'два', 'три', 'четыре', 'пять', 'шесть',
                                'семь', 'восемь', 'девять');
  D : array [1..10] of String = ('десять', 'двадцать', 'тридцать', 'сорок',
                                 'пятьдесят', 'шестьдесят', 'семьдесят',
  O : array [11..19] of String = ('одинадцать', 'двенадцать', 'тринадцать',
                                  'четырнадцать', 'пятнадцать', 'шестнадцать',
                                  'семнадцать', 'восемнадцать', 'девятадцать');
                                 'восемьдесят', 'девяносто', 'сто');
Во-вторых: Создадим функцию, которая будет возвращать строковое представление числа.
Для значений от 1 до 9 и от 11 до 19 всё ясно и так — значения будем просто брать из соответствующих массивов.
А вот для 10 и 20…100 сделаем так:
— выделим десятки и возьмём соответствующее значение из массива;
— выделим единицы и если будут не равны нулю, то добавим к результату пробел и их строковое представление.
Для удобства и простоты восприятия я использую недокументированную конструкцию <Условие> ? <Тогда> : <Иначе>

Pascal
1
2
3
4
5
6
7
8
9
function Num2string(N : Byte) : String;
begin
  case N of
     1..9  : Result := E[N];
    11..19 : Result := O[N];
  else
    Result := D[N div 10] + (N mod 10 > 0 ? ' ' + E[N mod 10] : '');
  end;
end;
В-третьих: Нам потребуется функция, возвращающая число букв в строковом представлении числа без учёта пробелов.

Pascal
1
2
3
4
function CountLetters(N : Byte) : Byte;
begin
  Result := Num2string(N).Replace(#32, '').Length;
end;
Осталось написать основной модуль программы:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
begin
  var N := ReadInteger('Введите число (1…100) :');
  var Count := 0;
  for var i := 1 to 100 do
    if CountLetters(i) = N then
      begin
        Count += 1;
        Print(Num2string(i), ' ');
      end;
  if Count = 0 then
    WriteLn('Нет таких чисел от 1 до 100.');
end.

P.S. И ни чего страшного в этих циклах… Тем более таких простых!
0
23.04.2015, 07:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2015, 07:49
Помогаю со студенческими работами здесь

Найти все натуральные числа, у которых сумма цифр, стоящих в нечетных разрядах равна заданному числу
Найти все N-значные натуральные числа (1&lt;N&lt;9), у которых сумма цифр, стоящих в нечетных разрядах...

Найти все натуральные трехзначные числа, сумма цифр которых кратна заданному натуральному числу B и само число также дел
Составить программу на языке Паскаль: Найти все натуральные трехзначные числа, сумма цифр которых...

даны натуральные числа m и n, получить все натуральные числа меньшие n, квадрат суммы которых равен m
даны натуральные числа m и n, получить все натуральные числа меньшие n, квадрат суммы которых равен...

Рекурсия: по заданному натуральному числу N напечатать все натуральные числа, не большие N, в порядке убывания
Разработать рекурсивную процедуру, который по заданному натуральному числу N (N(1000) выведет на...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru