• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

InviZible

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

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

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

InviZible

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

Barmutik

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

InviZible

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

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!