Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2012, 21:16   #1
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
Сообщение Переписать в новый файл G все строки текстового файла F, которые содержат строковую переменную S (Паскаль)

Задача: создать текстовый файл F. Переписать в новый файл G все строки файла F, которые содержат строковую переменную S.
Не знаю почему, но программа работает через 1 раз т.е. иногда записывеет строку в файл G а игогда не записывает. Вот код.Где ошибка?

Код:
program file_;
uses crt;
var f,f1: text;
    n,i,j: integer;
    s,s_u: string;
    m: array [1..100] of string;
begin
clrscr;
write('Колличество строк в файле?...'); readln(n);
assign(f,'abc.txt');
rewrite(f);
for i:=1 to n do begin
    write('Введите ',i,' строку...');
    readln(s);
    writeln(f,s);
    writeln;
end;
close(f);
write('Введите строку которую нужно найти в файле F и записать в файл G...');readln(s_u);
reset(f);
         for i:=1 to 3 do begin
             read(f,s);
             if s = s_u then m[i]:=s;
         end;
close(f);

assign(f1,'abc2.txt');

rewrite(f1);
for i:=1 to n do
    if m[i] <> '' then writeln(f1,m[i]);
close(f1);

writeln('Содержимое файла G...');

reset(f1);
for i:=1 to n do
    if m[i] <> '' then begin
       read(f1,m[i]);
       writeln(m[i]);
end;
close(f1);

readln;
readln;
END.
pashka_dos вне форума Ответить с цитированием
Старый 29.02.2012, 23:24   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

полный ужас и абстракция.
начиная от использования массива непонятного назначения, и заканчивая циклом от 1 до 3 (почему до 3-х) ?!?!


я бы предложил такой вариант:
Код:
.... тут заполнение исходного файла 
close(f);

write('Введите строку которую нужно найти в файле F и записать в файл G...');
readln(s_u);

reset(f);
assign(f1,'abc2.txt');
rewrite(f1);
while Not Eof(f) do begin
     readln(f,s);
     if Pos(s_u, s)>0 then WriteLn(f1, s);
end;
close(f);
close(f1);

ВСЁ!

p.s. я бы создание исходного файла вынес вообще в отдельную программу!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать текстовый файл, строки которого содержат целые числа. Обработать файл следующим образом: напечатать все отрицательные числ Anton94.by Паскаль, Turbo Pascal, PascalABC.NET 3 29.02.2012 17:30
Создать текстовый файл, строки которого содержат целые числа. Обработать файл следующим образом: напечатать все отрицательные... Anton94.by Паскаль, Turbo Pascal, PascalABC.NET 2 08.02.2012 19:23
Дан файл из символов. Переписать в новый файл все символы, за которыми в исходном файле следует данная буква Kolimba Паскаль, Turbo Pascal, PascalABC.NET 1 25.09.2011 17:57
Паскаль из текстового файла переписать строки с N по M (задаются пользователем) Александр01 Помощь студентам 0 07.06.2011 12:54
Переписать в новый файл все слова, которые содержат только буквы латин.алф. volchica Паскаль, Turbo Pascal, PascalABC.NET 3 18.02.2011 16:22