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

Тема в разделе "Delphi - FAQ", создана пользователем InviZible, 7 окт 2006.

Статус темы:
Закрыта.
  1. InviZible

    InviZible Гость

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

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

    Заранее спасибо.
     
  2. Barmutik

    Barmutik Гость

    И... что не понятно? :)
     
  3. InviZible

    InviZible Гость

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

    Barmutik Гость

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

    InviZible Гость

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

    Код (Text):
    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.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей