Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Pascal найти слова в тексте (https://forum.antichat.xyz/showthread.php?t=208658)

0x22b 02.06.2010 19:42

Pascal найти слова в тексте
 
Ачатовцы, подскажите как на паскале в строке текста найти слова которые больше пяти символов, но меньше 8?

wildshaman 02.06.2010 19:50

берешь переменную l под длину, сначала l=0
береме переменную s под слово, сначала s=''
Читать текст посимвольно, пока символ не пробел, прибавляя единицу к l, а символ к s
Когда достигли пробела, смотрим, если l>5 и l<8, выводим слово s
Если нет, не выводим
В любом случае l=0 ставим, s=''
И далее...

1n0y 03.06.2010 00:24

сунуть текст в стринглист, заменить внём все пробелы на перенос строк и далее:

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

miako 03.06.2010 00:27

Стринг лист в паскале?
ТС я ответил в теме про лабы.

1n0y 03.06.2010 00:28

Цитата:

Сообщение от miako
Стринг лист в паскале?
ТС я ответил в теме про лабы.

увлёкся, сорри (:
ну смысл, думаю, понятен. можно и без стринглиста ведь

0x22b 03.06.2010 09:01

Решил немного выежнуться и решил так, строку разбил на слова в массив, а потом каждое сравнивал по длинне..

Код:

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.



Время: 02:09