Определить порядковый номер его максимальной и минимальной цифры - Pascal ABC
Формулировка задачи:
Дано натуральное число, в котором все цифры различны. Определить порядковый номер его максимальной и минимальной цифры, считая номера
1. От конца;
2. От начала числа.
Спасибо за ответ!
Решение задачи: «Определить порядковый номер его максимальной и минимальной цифры»
textual
Листинг программы
var n,n1,k,k1,c,mn,imn,mx,imx:integer;
begin
write('Введите натуральное число из разных цифр больше 9 n=');
readln(n);
//узнаем сколько цифр в числе
n1:=n;
k:=0;
while n1>0 do
begin
n1:=n1 div 10;
k:=k+1;
end;
mn:=9;
mx:=0;
k1:=0;
while n>0 do
begin
c:=n mod 10;
k1:=k1+1;
if c<mn then
begin
mn:=c;
imn:=k1;
end;
if c>mx then
begin
mx:=c;
imx:=k1;
end;
n:=n div 10;
end;
writeln('Минимальная цифра=',mn,' ее номер справа=',imn,' слева=',k-imn+1);
writeln('Максимальная цифра=',mx,' ее номер справа=',imx,' слева=',k-imx+1);
end.
Объяснение кода листинга программы
- Создается переменная n, которая будет хранить введенное пользователем натуральное число.
- Вычисляется количество цифр в числе, которое будет храниться в переменной n1.
- Задаются начальные значения для переменной mn (9), mx (0) и k1 (0).
- Запускается цикл while, который будет выполняться до тех пор, пока n не станет равным нулю.
- Внутри цикла происходит деление n на 10, что позволяет получить последнюю цифру введенного числа. Полученная цифра сохраняется в переменной c.
- Задается значение k1 как сумму k и imn (индекс предыдущей цифры).
- Проверяется, является ли текущая цифра меньше mn. Если да, то обновляется значение mn и imn.
- Проверяется, является ли текущая цифра больше mx. Если да, то обновляется значение mx и imx.
- После завершения цикла n делится на 10, чтобы получить последнюю цифру.
- Выводится информация о минимальной цифре, ее номере слева и справа от нее.
- Выводится информация о максимальной цифре, ее номере слева и справа от нее.