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

  • Автор темы InviZible
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

InviZible

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

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

Заранее спасибо.
 
I

InviZible

#3
интересует: как найти последнее слово в строке, и из каких символов оно состоит состоит
 
B

Barmutik

#4
С конца перебирайте посимвольно строку пока не встретите один из разделителей (., ;:(
 
I

InviZible

#5
Всем спасибо, вот мой вариант

Код:
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.
 
Статус
Закрыто для дальнейших ответов.