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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.01.2010, 01:51   #1
Hikari
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 13
Вопрос Паскаль_работа с текстовыми файлами

здравствуйте!
помогите пожалуйста исправить ошибку в коде, составленной для задачи:

Найти максимальную длину строки в текстовом файле и распечатать все строки файла, имеющие такую длину. Создать новый файл, содержащий только строки с максимальной длиной.

Код программы:

program lab7;
uses crt;
var f_1,f_2:text;
max,t:byte;
a,s:string;

procedure vvod;
var i:byte;
s:string;
begin
clrscr;
rewrite(f_1);
repeat
readln(s);
writeln(f_1,s);
until readkey=#27;
close(f_1);
end;

procedure vivod;
begin
reset(f_1);
while not (eof(f_1)) do
begin
readln(f_1,s);
writeln(s);
end;
close(f_1);
readkey;
end;


procedure poisk;
var z:string;
begin
reset(f_1);
read(f_1,s);
a:=s;
while not (eof(f_1)) do
BEGIN
read(f_1,z);
if length(a)<length(z) then max:=length(z)
else max:=length(a);
end;


writeln;
write('max length of string:', max);
close(f_1);
end;

procedure max_string;
begin
reset(f_1);
while not (eof(f_1)) do
begin
read(s);
if length(s)=max then write(s);
end;
close(f_1);
end;


procedure new_max;
begin
rewrite(f_2);
reset(f_1);
while not(eof(f_1)) do
begin
read(f_1,s);
if length(s)=max then write(f_2,s);
end;
close(f_1);
close(f_2);
end;


procedure vivod2;
begin
reset(f_2);
while not (eof(f_2)) do
begin
readln(f_2,s);
writeln(s);
end;
close(f_2);
readkey;
end;



begin
clrscr;
assign(f_1,'text1.txt');
assign(f_2,'text2.txt');


repeat
clrscr;
writeln('menu');
writeln('1 - vvod');
writeln('2 - show');
writeln('3 - max strings');
writeln('4 - show 2nd file');
writeln('5 - exit');
write('t - ');
readln(t);
case t of
1: vvod;
2: vivod;
3: begin
poisk;
max_string;
end;
4: begin
poisk;
new_max;

end;
end;
until t=5;
end.

по какой-то причине зацикливается в процедуре poisk.
заранее спасибо!
Hikari вне форума Ответить с цитированием
Старый 10.01.2010, 04:32   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

строка, это по правилам, Readln, т.е. до знака возврата каретки (Enter)
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 10.01.2010, 09:24   #3
Hikari
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 13
По умолчанию

тогда как организовать поиск строки с наибольшей длиной?
Hikari вне форума Ответить с цитированием
Старый 10.01.2010, 09:41   #4
Hikari
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 13
По умолчанию

после добавления readln(s) теперь проблемы с процедурами max_string и new_max. не выводит на экран и вновь зацикливается
Hikari вне форума Ответить с цитированием
Старый 10.01.2010, 09:48   #5
Hikari
Пользователь
 
Регистрация: 31.05.2009
Сообщений: 13
По умолчанию

а при выполнении процедуры poisk выводит только длину первой строки.
Hikari вне форума Ответить с цитированием
Старый 10.01.2010, 10:10   #6
Deamonig
Форумчанин
 
Аватар для Deamonig
 
Регистрация: 19.09.2009
Сообщений: 166
По умолчанию

вот свой вариант написал для задачи:
Код:
program sss;
var
f1,f2:text;
s:string;
max:Integer;
begin
assign(f1,'file.txt');
reset(f1);
while not eof(f1) do
begin
readln(f1,s);
if length(s)>max then
max:=length(s);
end;
close(f1);

assign(f2,'vidpovid.txt');
rewrite(f2);
assign(f1,'File.txt');
reset(f1);
while not eof(f1) do
begin
readln(f1,s);
if length(s)=max then
writeln(f2,s);
end;
close(f2);
close(f1);
readln;
end.
Deamonig вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстовыми файлами Bytas Общие вопросы C/C++ 1 01.12.2009 22:39
работа с текстовыми файлами Bayazet Общие вопросы Delphi 10 09.12.2008 18:39
Работа с Текстовыми файлами wwww Общие вопросы Delphi 5 29.10.2007 11:17
Работа с текстовыми файлами DartMrakkk Общие вопросы Delphi 3 14.07.2007 16:52
Задача с текстовыми файлами SpeedMaster Паскаль, Turbo Pascal, PascalABC.NET 4 02.04.2007 15:43