|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.01.2010, 01:51 | #1 |
Пользователь
Регистрация: 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. заранее спасибо! |
10.01.2010, 04:32 | #2 |
Участник клуба
Регистрация: 29.12.2009
Сообщений: 1,166
|
строка, это по правилам, Readln, т.е. до знака возврата каретки (Enter)
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть] |
10.01.2010, 09:24 | #3 |
Пользователь
Регистрация: 31.05.2009
Сообщений: 13
|
тогда как организовать поиск строки с наибольшей длиной?
|
10.01.2010, 09:41 | #4 |
Пользователь
Регистрация: 31.05.2009
Сообщений: 13
|
после добавления readln(s) теперь проблемы с процедурами max_string и new_max. не выводит на экран и вновь зацикливается
|
10.01.2010, 09:48 | #5 |
Пользователь
Регистрация: 31.05.2009
Сообщений: 13
|
а при выполнении процедуры poisk выводит только длину первой строки.
|
10.01.2010, 10:10 | #6 |
Форумчанин
Регистрация: 19.09.2009
Сообщений: 166
|
вот свой вариант написал для задачи:
Код:
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с текстовыми файлами | 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 |