Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Файловая задача

Автор: Irish 12.04.2007 21:12

Помогите пожалуйста!!У меня задача, которую я не понимаю!!Все сайты облазила ни где не могу найти!!Вот условие: Дан файл содержащий текст на русском языке и некоторые два слова. Определить, сколько раз они встречаются в тексте и сколько из них непосредственно друг за другом.Я вас умоляю помогите!

Автор: CaMPeR 12.04.2007 21:17

Мне нужно решение абсолютно идентичной задачи! Уже гигабайт траффика сжег пока искал и так и не нашел! Просьба большая не давать ссылки (там все равно нет того что нужно, я смотрел по 10 раз).
Хотя бы часть задачи может у кого нибудь есть или просто похожая! Выручайте!

Автор: мисс_граффити 12.04.2007 22:07

хотя бы вот это бы почитали:
http://forum.pascal.net.ru/index.php?showtopic=6972

считали строку. с помощью pos посмотрели, есть ли надежда обнаружить хотя бы одно из слов. если есть -разбили строку на слова. посчитали, сколько раз встречается первое, сколько второе. нашли, где они по соседству.
считали следующую строку...

на каком этапе трудности?

Автор: CaMPeR 12.04.2007 22:23

Сам алгоритм действий я знаю. Как эти действия реализовать в Паскале не знаю. Дали похожую задачу. Что в ней нужно изменить для получения нужного результата? Тему я читал. Это что либо даст тому у кого хорошая база знаний. У меня пока ее нет. Сдавать вот уже завтра. Было бы больше времени.

uses
crt;
var
f:text;
px:^string;
st,s1^string;
flag^boolean;
k,d,maxd,ch:integer;
begin
clrscr;
assign<f, 'c:\tp70\bin\program.txt');
reset(f);
maxd:=1;
while not eof(f) do
begin
flag:=true;
new(px);
readln(f, px^);
while flag=true do begin
k:=pos(' ',px^);
if k<>0 then begin
st:=copy(px^,1,k);
delete(px^,1,k);
if lenght<st>maxd then begin
maxd:=lenght<st>;
s1:=st;
end;
flag:=true;
end;
if k=0 then begin
s:=copy<px^,1,lenght<px^>>;
if lenght<st>maxd then begin
maxd:=lenght<st>;
s1:st;
end;
flag:=false;
end;
end;
dispose<px>;
end;
close<f>;
reset<f>;
while not eof<f> do begin
new<px>;
readln<f,px^>;
k:=pos<s1,px^>;
if k<>0 then ch:ch+1;
dispose<px>;
end;
textcolor<2>;
writeln<'samoe dlinnoe slovo ',s1,' ego dlina ',maxd,' povtor ',ch>;
readln;
end.