ОБСУЖДЕНИЕ

Pascal. Работа с текстом.

4 ответов 7,3 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Статус
Закрыто для дальнейших ответов.
Автор темы
Решить задачу на обработку текста, использую функции работы со строками.
Предполагается, что исходным является текстовый файл. В текст могут входить слова из латинских букв, цифры, знаки арифметической операции, точка, запятая, пробел.

Задача: Вывести на экран те слова, которые отличны от последнего слова текста и первая буква этого слова входит в него ещё раз.

Заранее спасибо.
 
И... что не понятно? :)
 
интересует: как найти последнее слово в строке, и из каких символов оно состоит состоит
 
С конца перебирайте посимвольно строку пока не встретите один из разделителей (., ;:(
 
Всем спасибо, вот мой вариант

Код:
program lr4_19; 
uses crt;
var
bukvi:set of char;
f:text;
slovo,c,s,possl:string;
pslovo,i,k,j:integer;
massl:array[1..100] of string;
begin
clrscr;
assign(f,'E:/tp7/bin/test/text.txt');
reset(f);
bukvi:=['A'..'Z','a'..'z'];
j:=1;
writeln('====Text=====================');
while not eof(f) do
begin
readln(f,s);
writeln(s);
i:=1;
while (i <=length(s)) do
begin
pslovo:=0;
if not (s[i] in bukvi) then inc(i);
slovo:='';
while (i <=length(s)) and (s[i] in bukvi ) do
begin
pslovo:=1;
slovo:=slovo+s[i];
inc(i);
end;
if pslovo=1 then
begin
massl[j]:=slovo;
inc(j);
end;
end;
end;
writeln('=============================');
for i:=1 to j-1 do
write(massl[i],' ');
writeln;

writeln('****last word****************');
possl:=massl[j-1];
writeln(possl);
writeln('*****************************');

for i:=1 to j do
begin
slovo:=massl[i];
c:=slovo[1];
delete(slovo,1,1);
if pos(c,slovo) > 0 then
begin
slovo:=c+slovo;
massl[i]:=slovo;
if (slovo<>possl) then writeln(slovo);
end;
end;
{ writeln(possl); esli nujno pechatat' possl }

close(f);
readln;
end.
 
Статус
Закрыто для дальнейших ответов.