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

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

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

Автор: serega204 8.12.2009 4:11

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

Program LR8; Uses Crt;
VAR
I, J, N, M, k : integer;
S, P : string;
t : char;
Fi, Fr : text;

{----- ОСНОВНАЯ ПРОГРАММА -----}
Begin CLRSCR;
Assign (Fi, 'lr8.txt'); Reset (Fi);
p := ''; i := 0;
writeln ('Исходные данные:',#10#13);
while not eof(Fi) do begin
read (Fi, t); write (t);
end;
Writeln(#10#13, 'Введите строку из песни:'); Readln(P);
I := -1; k := 0;
Repeat I := I+1; J := 0; While (J < M) and (S[I + J] = P[J]) do
J := J+1;
Until (j = M) Or (I = N-M);
Writeln('Количество одинаковых предоложений: ', k);
Repeat Until KeyPressed
end.



Я и ты - две планеты две мечты
Только говорим на разных языках
Город твой за невидимой чертой
Мы с тобой живём на разных берегах
Белое вино луны, ночь, аэропорт и мы
В целом мире ни души быть или не быть скажи
И нет проблем у любви другой шенген
Без границ и глупых стен между нами только небо и сны
И нет проблем у любви другой шенген
Без границ и глупых стен между нами только солнце весны
Я и ты снова рейс из пустоты
Не остановить секунды на часах
Мир так мал я не ждал и не искал
А нашёл тебя в далёких городах
Белое вино луны, ночь, аэропорт и мы
В целом мире ни души быть или не быть скажи
И нет проблем у любви другой шенген
Без границ и глупых стен между нами только небо и сны
И нет проблем у любви другой шенген
Без границ и глупых стен между нами только солнце весны

Автор: Lapp 8.12.2009 4:52

Вот, как-то так:

Program LR8;
Uses Crt;

VAR
i, k : integer;
P, t : string;
Fi : text;

{----- ОСНОВНАЯ ПРОГРАММА -----}
Begin
Assign (Fi, 'lr8.txt');
Reset (Fi);
writeln ('Исходные данные: ');
WriteLn;
while not eof(Fi) do begin
ReadLn(Fi,t);
WriteLn(t);
end;
WriteLn;
Writeln('Введите строку из песни: ');
Readln(P);
ReSet(Fi);
k := 0;
while not eof(Fi) do begin
ReadLn(Fi,t);
if t=P then Inc(k)
end;
Writeln('Количество одинаковых предоложений: ', k);
Close(Fi);
Repeat Until KeyPressed
end.

И обрати внимание на то, как правильно фрматировать прогу. Жить станет легче..


Добавлено через 2 мин.
еще кое-что..
Не используй явный перевод строки (#13#10).
Закрывай открытые файлы.
Очищать P перед вводом - не нужно.
ClrScr не надо использовать, если у тебя не позицилнный вывод. Если уж так ты его полюбил, ставь только после отладки - в процессе лучше не убирать старые рзультаты с экрана.

Автор: serega204 8.12.2009 13:02

Спасибо большое......там последовательный поиск должен быть по заданию

Автор: Lapp 8.12.2009 22:33

Цитата(serega204 @ 8.12.2009 9:02) *
Спасибо большое......там последовательный поиск должен быть по заданию
Пожалуйста. А тут какой? Случайный?..