Pascal найти слова в тексте

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by 0x22b, 2 Jun 2010.

  1. 0x22b

    0x22b Elder - Старейшина

    Joined:
    1 Dec 2007
    Messages:
    114
    Likes Received:
    32
    Reputations:
    9
    Ачатовцы, подскажите как на паскале в строке текста найти слова которые больше пяти символов, но меньше 8?
     
  2. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    берешь переменную l под длину, сначала l=0
    береме переменную s под слово, сначала s=''
    Читать текст посимвольно, пока символ не пробел, прибавляя единицу к l, а символ к s
    Когда достигли пробела, смотрим, если l>5 и l<8, выводим слово s
    Если нет, не выводим
    В любом случае l=0 ставим, s=''
    И далее...
     
  3. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    276
    Likes Received:
    282
    Reputations:
    2
    сунуть текст в стринглист, заменить внём все пробелы на перенос строк и далее:

    list:=tstringlist.create;
    for i:=0 to list.count-1 do
    begin
    if (length(list)>5) and (length(list)<8) the
    showmessage('нашли слово: '+list );
    end;
     
  4. miako

    miako Member

    Joined:
    20 Jan 2010
    Messages:
    154
    Likes Received:
    13
    Reputations:
    5
    Стринг лист в паскале?
    ТС я ответил в теме про лабы.
     
  5. 1n0y

    1n0y Active Member

    Joined:
    9 May 2009
    Messages:
    276
    Likes Received:
    282
    Reputations:
    2
    увлёкся, сорри :)
    ну смысл, думаю, понятен. можно и без стринглиста ведь
     
  6. 0x22b

    0x22b Elder - Старейшина

    Joined:
    1 Dec 2007
    Messages:
    114
    Likes Received:
    32
    Reputations:
    9
    Решил немного выежнуться и решил так, строку разбил на слова в массив, а потом каждое сравнивал по длинне..

    Code:
    program zadanie3;
    var
    i,n,k:integer;
    predl:string;
    words,result:array[1..100] of string;
    wfile:text;
    filename:string;
    begin
    predl:='turbo pascal internet go interest programming number size on get post kelvin programming development';
    n:=1;
    k:=1;
    for i:=1 to length(predl) do begin
      if predl[k]<>' ' then  begin
        words[n]:=words[n]+predl[k];
        inc(k);
      end
      else
      begin
        inc(n);
        inc(k);
      end;
    end;
    
    k:=1;
    
    for i:=1 to n do begin
      if (length(words[i])>5) and (length(words[i])<8) then begin
        result[k]:=words[i];
        inc(k);
      end;
    end;
    
    filename:='res.txt';
    Assign(wfile,filename);
    Rewrite(wfile);
    Writeln(wfile, 'ishodniy text:');
    writeln(wfile, predl);
    writeln(wfile, 'slova po usloviu:');
    for i:=1 to k do
     writeln(wfile, result[i]);
    Close(wfile);
    end.