Какое наибольшее число можно получить, если поменять местами две цифры заданого целого числа n? - Pascal

Узнай цену своей работы

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

Какое наибольшее число можно получить, если поменять местами две цифры заданого целого числа n? Входные данные Целое число n, по модулю не превышает 1015. Входные данные Входные данные #1 127 Выходные данные #1 721

Решение задачи: «Какое наибольшее число можно получить, если поменять местами две цифры заданого целого числа n?»

textual
Листинг программы
Var
  n : int64;
  st : String;
 
Function SwapCh(s : String; a,b : Byte) : String;
Begin
  s[a]:=Chr(Ord(s[a]) xor Ord(s[b]));
  s[b]:=Chr(Ord(s[a]) xor Ord(s[b]));
  s[a]:=Chr(Ord(s[a]) xor Ord(s[b]));
  SwapCh:=s;
end;
 
Function SW(s : String) : String;
Var
  Positiv : Boolean;
  i,j : Byte;
  smax  : String;
Begin
  Positiv:=s[1]<>'-';
  If s[1]='-' then Delete(s,1,1);
  smax:=SwapCh(s,1,2);
  If Length(s)>1 then
  Begin
    For i:=1 to Length(s)-1 do
     For j:=i+1 to Length(s) do
       If (Positiv and (SwapCh(s,i,j)>smax)) or
          (not Positiv and (SwapCh(s,i,j)<smax)) then smax:=SwapCh(s,i,j) 
  end else smax:=s;
  If not Positiv then smax:='-'+smax;
  SW:=smax;
end;
 
Begin
  Readln(n);
  Str(n,st);
  Writeln(SW(st));
end.

Объяснение кода листинга программы

В данном коде представлен алгоритм, который меняет местами две цифры заданного целого числа. Переменная n представляет собой целочисленное значение, которое считывается с помощью функции Readln(). Значение n сохраняется в переменной st с помощью функции Str(). Далее представлена функция SwapCh(), которая принимает строку s и две цифры a и b в качестве параметров. Внутри функции происходит обмен цифрами a и b, а затем возвращается измененная строка s. Затем представлена функция SW(), которая также принимает строку s в качестве параметра. Внутри функции проверяется первый символ строки s. Если он не равен '-', то с помощью функции Delete() удаляется этот символ. Затем вызывается функция SwapCh() для обмена первым и вторым символами строки s. Если длина строки s больше 1, то происходит поиск наибольшего числа среди всех символов строки s. Для этого происходит последовательный обмен символами и сравнивается полученное значение с предыдущим максимальным значением. Если найденный максимум больше текущего значения, то обновляется максимальное значение. Если текущее значение не равно максимальному, то оно остается без изменений. В конце функция возвращает максимальное значение. В основной части кода считывается целочисленное значение n, затем вызывается функция SW(st), которая возвращает наибольшее число, которое можно получить, меняя местами две цифры заданного целого числа. Результат выводится на экран с помощью функции Writeln().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы