Переделать вывод программы ** строки. Паскаль. Как перенастроить ** то, чтобы выводилось...

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

Переделать вывод программы на строки.
Паскаль. Как перенастроить на то, чтобы выводилось в столбик?
Программа выводит строку, из которой удаляется заданное слово. Проблема в том, что строка выводится также горизонтально, как и задавалась. Прошу помощи!

Пример:

boat
load cargo to the boat truck

load
cargo
to
the
truck

Может мне стоит использовать другой цикл?

var
p, s: string;
k: byte;

begin

readln(p);
readln(s);

s := ' ' + s + ' '; // можете пояснить зачем нужны две эти строки? На практике если их убрать, то будет удаляться не все слово, а точнее будет оставаться последняя буква. Может можно это как-то исправить и без этих строк?
p := ' ' + p + ' ';
repeat
k := pos(p, s);
if k > 0 then delete(s, k, length(p) - 1);
until k = 0;
writeln(s);
end.


Информатика (272 баллов) | 65 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Var
p, s: string;
k, l: byte;

begin

readln(p); 
readln(s);

s := ' ' + s + ' '; // Строка нужна для корректного удаления первого и/или последнего слова 
p := ' ' + p + ' '; // Строка нужна для удаления слова, а не последовательности символов в слове
l := length(p) - 1;
repeat
k := pos(p, s);
if k > 0 then delete(s, k, l);
until k = 0;
for var i:=1 to length(s) do
 if s[i]<>' ' then write(s[i]) else writeln;
end.

(194k баллов)