Условие задачи : Написать программу, которая будет выводить запись числа в обратном порядке. Число вводит пользователь.
Сложность : легкая .
Естественно сначала стоит сказать как мы будем решать эту задачу. Мы воспользуемся операциями mod и div.
- div — находит целую часть от деления
- mod — находит остаток от деления
Сразу примерчик. Допустим у нас есть число 234. Занесем его в переменную например number.
Теперь применим к нему операцию mod чтобы оторвать от него последнюю цифру и эту цифру тоже занесем в переменную.
Выглядеть это будет так :
number := 234; i := number mod 10 ; {теперь в переменной i будет число 4}
Из этой переменной i мы и будем составлять наше число.
Создадим переменную для нашего перевернутого числа , пусть она называется conv , сокращенно от conversely что в переводе с англ. наоборот.
Смотрите что я сейчас сделаю :
conv := 0 ; number := 234; i := number mod 10 ; conv := conv*10 + i ;
И что у нас получиться, если мы подставим 3? Переменная conv у нас и будет равняться 3. Еще осталось два числа.
Нам нужно из переменной number убрать лишнее число, т.е. последнее, т.к. нам уже нужна следующая цифра.
Тут нам поможет операция div. Пишем :
number := number div 10; {теперь тут будет число 23}
Вот код который у нас на данный момент :
number := 234; i := number mod 10 ; {теперь в переменной i будет число 4} conv := conv*10 + i ; number := number div 10;
Теперь нужно добавить цикл, чтобы эти операции выполнялись несколько раз, но сколько ?
Они у нас будет выполняться пока наше число number будет иметь какие-то цифры, т.е. будет больше нуля.
Пишем :
number := 234; while (number >0) do begin i := number mod 10 ; conv := conv*10 + i ; number := number div 10; end;
Вот как-то так , теперь если мы проделаем туже операцию несколько раз то у нас запишется число в обратном порядке.
Если не поняли, то возьмите бумажку напишите число и просто проделайте эту операцию, тогда точно всё поймёте.
Весь код программы :
uses crt; var number, conv, i : integer; begin write('Введите число : '); readln(number); conv := 0; while (number >0) do begin i := number mod 10 ; conv := conv*10 + i ; number := number div 10; end; writeln('Обратная запись числа: ', conv); readln; end.