Top.Mail.Ru
Ответы
Аватар пользователя
13лет
Изменено
Аватар пользователя
Аватар пользователя
Программирование
+1

Внешние файлы в Delphi

Буду очень благодарна, если поможете, обратиться не к кому, ошибку найти не могу... Надо считать матрицу с одного внешнего файла (в моем случае блокнот), обработать, и результат записать в другой внешний файл (пусть будет тоже блокнот). Под обработкой понимается найти наибольший элемент матрицы, вывести его, а так же вывести номер этого элемента. Если таких элементов два или более, то вывести все номера. То есть в новом файле должен появиться наибольший элемент и все его номера. Вот мой код, но мне он создает файл, в который выводит полную ерунду.
procedure TForm1.btn1Click(Sender: TObject);
var f,g:TextFile; i,j,n,m,k,t:Byte; x:array of array of real; z,u:real; h:string;
begin
if OpenDialog1.Execute then
begin
AssignFile(f,OpenDialog1.Filename);
{$I-} Reset(f); {$I+}
if IOResult<>0 then begin ShowMessage('Файл не найден'); Exit; end;
end
else begin ShowMessage('Файл не выбран'); Exit; end;
if eof(f) then begin ShowMessage('Файл пустой'); CloseFile(f); Exit; end;
m:=0; n:=0; k:=0; t:=0; h:='';
repeat
Readln(f);
m:=m+1;
until eof(f);
Reset(f);
repeat
Readln(f,z);
n:=n+1;
until eoln(f);
Reset(f);
SetLength(x,m,n);
for i:=0 to m-1 do
begin
for j:=0 to n-1 do
begin
read(f,x[i,j]);
if x[i,j]>x[k,t] then
begin
k:=i; t:=j; u:=x[k,t];
end;
end;
end;
for i:=0 to m-1 do
begin
for j:=0 to n-1 do
begin
read(f,x[i,j]);
if u=x[i,j] then h:=h+#32+IntToStr(i)+IntToStr(j);
end;
end;
AssignFile(g,'File2.txt');
Rewrite(g);
write(g,'Наибольший элемент: ',u,'','Номер: ',h);
CloseFile(f); CloseFile(g);
end;

По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
13лет

не зная формата входного файла сказать ничего нельзя. Однако сразу видно, что в первом проходе узнаётся величина m, а во втором -- n, которое в силу использования ридльн в точности равно m. Отсюда, возможно, бяки.