Дана строка S, состоящая из слов, разделённых пробелами. Выведите все слова, которые...

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

Дана строка S, состоящая из слов, разделённых пробелами. Выведите все слова, которые встречаются в S ровно один раз. Формат входных данных Во входном файле дана строка S. Строка S состоит из строчных букв латинского алфавита и пробелов; в ней есть хотя бы одна буква, ёe длина не превышает 100 символов. Формат выходных данных Выведите все слова, которые встречаются в S ровно один раз. Каждое слово выводите на новой строке в том порядке, в котором они встречаются в S. Примеры: Вход to be or not to be Выход or not.

UPD. На Free Pascal надо


Информатика (15 баллов) | 288 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
var s,s1,s2:string;
p,k:integer;
begin
writeln('Введите строку:');
readln(s);
s1:=s+' ';
while pos('  ',s1)>0 do delete(s1,pos(' ',s1),1);
while s1<>'' do
begin
p:=pos(' ',s1);
s2:=copy(s1,1,p-1);
delete(s1,1,p);
k:=1;
while pos(s2,s1)>0 do
begin
k:=k+1;
delete(s1,pos(s2,s1),p);
end;
if k=1 then writeln(s2);
end;
end.

Пример:
Введите строку:
to be or not to be
or
not 
(194k баллов)
0

Хорошо, но не могли бы вы переделать программу так, чтобы каждое слово было на новой строке.

0

Вы записываете в одну строку ответ и ее выводите. А в задаче нужно выводить каждое слово с новой строки.

0

Прога зациклилась.

0

Пример, пожалуйста, дайте.

0

Пример: to be or not to be. Больше нет примеров. Она зацикливается и печатает пустые строки без остановки мне в файл.

0

Скорее всего, что-то при работе с файлом не в порядке.

0

В компиляторе тоже самое. Без использования файла.

0

Если на этот ресурсе есть возможность залить скриншот, то я буду рад видеть как этот код у вас скомпилировался

0

Скриншот компилироваться не будет ). Приведенный текст у меня компилируется и работает так, как показано в примере.

0

В строке while pos(' ',s1)>0 do delete(s1,pos(' ',s1),1); в первом pos(' ',s1) должно быть два пробела!