Переделайте программу так, чтобы данные считывались с дискового файла.

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 покажите как должна будет выглядеть матрица в файле

Приложения:

Ответы

Ответ дал: Giammy
0
У вас был неправильно реализован алгоритм поиска среднего значения.

При вводе данных в файл удостоверьтесь что нет пустых строк(строк с пробелами), а также нет пробелов в конце самих строк.

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.

Пример ввода/вывода+код:
Приложения:
Ответ дал: Aillianna
0
если чтенье и запись разделены то стоило и работу с файлами разделить
Ответ дал: Aillianna
0
var
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.
Ответ дал: Aillianna
0
и вообще ошибка при вычислении среднего
Вас заинтересует