Поменять местами наибольшую и наименьшую цифры в числе - Pascal

Формулировка задачи:

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

Код к задаче: «Поменять местами наибольшую и наименьшую цифры в числе - Pascal»

textual
var n,m,kmn,kmx:integer;
    k,mx,mn,i,imx,imn:byte;
begin
repeat
write('Введите число больше 9 n=');
readln(n);
until n>9;
mn:=9;
imn:=0;
mx:=0;
imx:=0;
k:=0;
m:=n;
while m>0 do
 begin
  k:=k+1;{считаем цифры}
  if m mod 10<mn then {если меньше}
   begin
    mn:=m mod 10;{это мин}
    imn:=k {его номер с конца}
   end;
  if m mod 10>mx then {то же с макс.}
   begin
    mx:=m mod 10;
    imx:=k
   end;
  m:=m div 10;
 end;
if mn=mx then
 begin
  writeln('Все цифры в числе одинаковы');
  exit;
 end;
kmn:=1;{узнаем разряд мин}
for i:=2 to imn do
kmn:=kmn*10;
kmx:=1;{то же макс}
for i:=2 to imx do
kmx:=kmx*10;
{получим новое число, вычтя старые цифры и прибавив новые}
m:=n-mx*kmx-mn*kmn+mx*kmn+mn*kmx;
write(m);
end.

7   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы