Переделайте программу так, чтобы данные считывались с дискового файла.
program prog_2_6a;
type vx=array[1..10,1..10]of real;
type vy=array[1..10]of real;
var
x:vx;
y:vy;
n,m,i,j:integer;
a:real;
begin
writeln('Введите количество cтрок');
readln(n);
writeln('Введите количество столбцов');
readln(m);
for i:=1 to n do
begin
for j:=1 to m do
begin
writeln(j,'-й элемент ',i,'-й строки');
readln(x[I,j])
end;
end;
for j:=1 to m do
begin
a:=0;
a:=a+x[I,j];
y[j]:=a/n;
writeln('Среднее значение по ',j,'-му столбцу');
writeln(y[j]:8:2);
end;
readln;
End.
Данные матрицы находятся в изображении.
P.S покажите как должна будет выглядеть матрица в файле
Answers & Comments
Verified answer
У вас был неправильно реализован алгоритм поиска среднего значения.При вводе данных в файл удостоверьтесь что нет пустых строк(строк с пробелами), а также нет пробелов в конце самих строк.
program prog_2_6a;
type
vx = array[1..100, 1..100] of real;
vy = array[1..10] of real;
var
x: vx;
y: vy;
f: text;
n, m, i, j: integer;
a: real;
begin
assign(f, 'input.txt');reset(f);
n := 0;
while not Eof(f) do
begin
inc(n);
m := 0;
while not Eoln(f) do
begin
inc(m);
read(f, x[n, m]);
end;
readln(f);
end;
close(f);
assign(f, 'output.txt');rewrite(f);
if (n > 10) or (m > 10) then begin Writeln(f, 'Некорректно введены данные в файл или кол-во столбцов/строк превышают 10');close(f);exit; end;
for i := 1 to m do
begin
for j := 1 to n do
a := a + x[j, i];
y[i] := a / n;
writeln(f, 'Среднее значение по ', i, '-му столбцу', y[i]:8:2);
a := 0;
end;
close(f);
end.
Пример ввода/вывода+код:
x: array[1..10, 1..10]of real;
f: text;
n, m, i, j: integer;
a: real;
begin
assign(f, 'input.txt');
reset(f);
n := 0;
while not Eof(f) do
begin
n := n + 1;
m := 0;
while not Eoln(f) do
begin
m := m + 1;
read(f, x[n, m]);
end;
readln(f);
end;
close(f);
assign(f, 'output.txt');
rewrite(f);
for j := 1 to m do
begin
a := 0;
for i := 1 to n do
a := a + x[i, j];
writeln(f, 'Среднее значение по ', j, '-му столбцу = ', (a / n):8:2);
end;
close(f);
end.