Какое наибольшее число можно получить, если поменять местами две цифры заданого целого числа n? - Pascal
Формулировка задачи:
Решение задачи: «Какое наибольшее число можно получить, если поменять местами две цифры заданого целого числа n?»
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()
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д