Напечатайте строку, предварительно удалив из нее все вхождения th - Turbo Pascal
Формулировка задачи:
Не работает, помогите найти ошибку!
Известно, что в начале строки s находится не более 40 латинских букв, за которыми
следуют пробелы. напечатайте эту строку, предварительно удалив из нее все вхождения th
Листинг программы
- {$APPTYPE CONSOLE}
- uses
- SysUtils;
- const m=80;
- type stroka = array[1..80] of char;
- var s: stroka;
- srt: string;
- n: integer;
- procedure read_stroka (var s: stroka; var i: integer);
- var ch:char;
- begin
- ch := '.';
- i := 1;
- while i<=n do
- begin
- read (ch);
- s[i] := ch;
- i := i + 1;
- end;
- end;
- procedure delete_stroka (var s:stroka;var n: integer);
- var i,j: integer;
- begin
- i :=1;
- while i < n do
- begin
- if (s[i] = 't') and (s[i+1] = 'h') then
- begin
- for j:=i to n-2 do begin
- s[j] := s[j+2]
- end;
- s[n-1]:=' ';
- s[n]:=' ';
- end
- else
- i := i + 1 ;
- end;
- end;
- procedure print_stroka(s:stroka; k:integer);
- var i :integer;
- begin
- i := 1;
- while i <=n do
- begin
- write (s[i]);
- i := i + 1;
- end;
- writeln;
- end;
- begin
- writeln ('введите длину строки');
- readln(n);
- writeln ('введите строку, заканчивающуюся пробелом, не более ',n,' символов');
- read_stroka(s,n);
- delete_stroka(s,n);
- print_stroka(s,n);
- Readln;
- readln;
- end.
Решение задачи: «Напечатайте строку, предварительно удалив из нее все вхождения th»
textual
Листинг программы
- for j:=Length(s)-1 downto 1 do
- if (s[j]='t') and (s[j+1]='h') then Delete(s,j,2);
Объяснение кода листинга программы
- В цикле for перебираются символы строки s, начиная с последнего и до первого включительно.
- Проверяется условие: если текущий символ равен 't' и следующий символ равен 'h'.
- Если условие выполняется, то удаляется подстрока s[j:j+2], то есть символ 't' и следующий за ним символ 'h'.
- Цикл продолжается до тех пор, пока не будет пройдено все символы строки s.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д