Найти максимальную длину строки в текстовом файле и. распечатать все строки файла, имеющие такую длину.
Помогите, пожайлуста, решить задачу!!! Заранее благодарю!!!!
uses crt;
Const filename = 'MyFile.txt';
var f : TEXT;
S : string;
max,a : integer;
begin
Clrscr;
assign (f,filename);
reset (f);
max:=0;
while not eof(f) do
begin
readln (f,s);
If Length(s) >= max then max:=Length(s);
end;
writeln (max);
reset (f);
while not eof(f) do
begin
readln (f,s);
if Length(s) = max then writeln (S);
end;
Close (f);
readkey;
end.
Первая реализация программы, делающей то, что указано в задании за ОДИН проход по файлу - "+" в репутацию от меня...
Массивами/списками итд пользоваться естественно нельзя ?
Естественно...
А вообще можно так сделать : Напечатать все строки на экране потом оттуда через видео проверять сколько символов в каждой из них. Тут уже будет 2 прохода но не по файлу =) Потом через СРТ удалять ненужные. Или через граф также вывести чтроки красным цветом потом брать каждую строку и черпать цвет пикселя, у кого больше наберётся проверок, с той длиной и сравнивать, боюсь если даже это возможно я не реализую.
program text_file;
uses crt;
var f: text;
max: integer;
s:string;
begin
max:=0;
assign(f,'c:\fil.txt');
reset(f);
while not eof(f) do
begin
readln(f,s);
if length(s)>max then
begin
clrscr;
max:=length(s);
end;
if max=length(s) then
writeln(s);
end;
readln;
close(f);
end.
Ну, тогда что, решение при котором цвет неподходящих строк устанавливается цветом фона - тоже верно?... Мне так не кажется.. Сорри... Вопрос снят...
uses crt;
var
f: Text;
s, temp: String;
max: integer;
begin
clrscr;
assign(f, 'text.txt');
reset(f);
temp := '';
max := 0;
while not(eof(f)) do begin
readln(f, s);
if length(s) > max then begin
temp := '';
max := Length(s);
end;
if length(s) = max then temp := temp + s + #10#13;
end;
writeln(temp);
readln;
end.
Не понял, в чем фишка, решение напрашивается очевидное:
uses crt;
var f:text;
var m:byte;
procedure q(var m:byte);
var s:string;
begin
if not eof (f) then begin
readln(f,s);
if m<length(s) then m:=length(s); q(m);
end;
if eof (f) and (length(s)=m) then writeln (s);
end;
begin
clrscr;
assign (f,'text.txt'); reset (f);
m:=0;
q(m);
close (f);
end.