• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Файлы паскаль

  • Автор темы Автор темы netsky9
  • Дата начала Дата начала

netsky9

Ученик
Регистрация
15 Фев 2014
Сообщения
6
Реакции
0
Баллы
0
Файлы паскаль

Задача такая: Дан текстовый файл f. Получить самую длинную строку файла. Если в файле имеется несколько строк с наибольшей длиной, то получить одну из них и записать в новый файл.

Пытался написать программу, либо ничего не выводит в файл, либо отдельную строку, которая не является самой длинной.

Var
f1,f2:Text;
s:string;
max:integer;

Begin
max:=1;
Assign(f1,'C:\Program Files\PABC\readme.txt');
Reset(f1);
Assign(f2,'C:\Program Files\PABC\f1.txt');
Rewrite(f2);
while not eof(f1) do
begin
readln(f1,s);
if max<length(s) then
max:=length(s);
while not eof(f1) do
begin
repeat
readln(f1,s);
if length(s)=max then Write(f2,s);
Until EoF(f1);
end;
end;
Close(f1);
Close(f2);
End.
 
Пытался написать программу, либо ничего не выводит в файл, либо отдельную строку, которая не является самой длинной.
А потому что с циклами черт-те что наворотили! Попробуйте так:
Код:
Var
 f1,f2:Text;
 s:string;
 max:integer;

Begin
 max:=1;
 Assign(f1,'C:\Program Files\PABC\readme.txt');
 Reset(f1);
 Assign(f2,'C:\Program Files\PABC\f1.txt');
 Rewrite(f2);
 while not eof(f1) do
  begin
   readln(f1,s);
   if max<length(s) then max:=length(s);
  end;
 Reset(f1);
 repeat
  readln(f1,s);
  if length(s)=max then Writeln(f2,s);
 until length(s)=max;
 Close(f1);
 Close(f2);
End.
 
А потому что с циклами черт-те что наворотили! Попробуйте так:
Код:
Var
 f1,f2:Text;
 s:string;
 max:integer;

Begin
 max:=1;
 Assign(f1,'C:\Program Files\PABC\readme.txt');
 Reset(f1);
 Assign(f2,'C:\Program Files\PABC\f1.txt');
 Rewrite(f2);
 while not eof(f1) do
  begin
   readln(f1,s);
   if max<length(s) then max:=length(s);
  end;
 Reset(f1);
 repeat
  readln(f1,s);
  if length(s)=max then Writeln(f2,s);
 until length(s)=max;
 Close(f1);
 Close(f2);
End.

:tehnari_ru_288: Спасибо!!! очень помогли, буду разбираться с файлами дальше.
 
Назад
Сверху