Удаление из строки одинаковых символов. - Pascal
Формулировка задачи:
С помощью какого алгоритма можно допустим из строки:
asaa sas dd ertt.
Получить строку:
asdert
?
Решение задачи: «Удаление из строки одинаковых символов.»
textual
Листинг программы
uses crt; var s:string; i,j:byte; c:char; begin clrscr; write('Stroka: '); readln(s); i:=1; while i<=length(s) do begin c:=s[i]; for j:=length(s) downto i+1 do if s[j]=c then delete(s,j,1); i:=i+1; end; write(s); readln end.
Объяснение кода листинга программы
- В начале кода используется директива
uses
, которая подключает стандартную библиотеку Pascal. - Переменная
s
объявлена как строка (string
). - Переменные
i
иj
объявлены как байты (byte
). - Переменная
c
объявлена как символ (char
). - Строка
clrscr;
очищает экран. - Функция
readln(s)
считывает ввод пользователя и сохраняет его в переменнойs
. - Переменная
i
инициализируется значением 1. - Запускается цикл
while i<=length(s)
который выполняется до тех пор, пока значение переменнойi
меньше или равно длине строкиs
. - Внутри цикла считывается символ из строки
s
и сохраняется в переменнойc
. - Запускается вложенный цикл
for j:=length(s) downto i+1 do
, который начинается с индексаj
равного длине строкиs
и продолжается до индексаi
увеличенного на 1. - Внутри вложенного цикла сравниваются символы в строке
s
с символомc
. Если они совпадают, то вызывается функцияdelete(s,j,1)
, которая удаляет символc
из строкиs
в позицииj
. - После завершения вложенного цикла значение переменной
i
увеличивается на 1. - После завершения внешнего цикла значение переменной
s
выводится на экран с помощью функцииwrite(s)
. - Вызывается функция
readln()
, чтобы пользователь мог ввести следующую команду.