Задачи по Pascal. Запись числа в обратном порядке.

pascalУсловие задачи : Написать программу, которая будет выводить запись числа в обратном порядке. Число вводит пользователь.

Сложность : легкая .

Естественно сначала стоит сказать как мы будем решать эту задачу.  Мы воспользуемся операциями 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.

Вот результат :

ris115

Написать ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *