Поменять местами максимальное и минимальное 3хзначное число х(Pascal)Типо 157=751

0 голосов
86 просмотров

Поменять местами максимальное и минимальное 3хзначное число х(Pascal)Типо 157=751


Информатика (12 баллов) | 86 просмотров
Дан 1 ответ
0 голосов

Интересная задачка, заковыристая...

Var x,i,c,q,p:integer; s:string; max,min,k:char;
Begin
 readln(x);
 str(x,s);
 max:=s[1];
 min:=s[1];
 p:=1; q:=1;
 for i:=2 to length(s) do
   begin
    if s[i]>max then
      begin
       max:=s[i];
       q:=i;
      end;
    if s[i]      begin
       min:=s[i];
       p:=i;
      end;
   end;
 k:=s[p];
 s[p]:=s[q];
 s[q]:=k;
 val(s,x,c);
 writeln(x);
End.

Сработает для чисел любой значности.

(472 баллов)
0

не работает выбрасывает последнее число

0

Str(x,s) - функция преобразует числовое значение x в строковую переменную s. Val(s,x,c) - функция преобразует строку s в числовое представление, записывает его в x и указывает количество ошибок в c (если таковых нет, то c=0). Если будут спрашивать, скажи, что в учебнике каком-нибудь нашел, или на сайте любом.

0

не работает

0

На каком компиляторе запускаешь? Free Pascal?

0

Pascal ABC

0

Я дописал одну строчку, попробуй теперь.

0

что такое for i:=2 to length(s) do

0

Мы проходимся по нашей строке s, обрабатывая каждый символ в ней. i - это номер символа (к примеру, в строке s='2h74' s[3]='7'). length(s) - это количество символов в строке s. Цикл for берет каждый сивмол, начиная со 2-го номера, и заканчивая последним. Со второго номера мы начинаем потому, что первый мы уже обработали за циклом:
max:=s[1];
min:=s[1];
p:=1; q:=1;

0

спасибо большое ты мне жизнь спас

0

Обращайся =)