Предмет: Информатика,
автор: VALTIM
СРОЧНО ПОМОГИТЕ. МНОГО БАЛЛОВ!!!
Переделайте программу так, чтобы данные считывались с дискового файла.
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 покажите как должна будет выглядеть матрица в файле .txt
Приложения:
VALTIM:
извините
Ответы
Автор ответа:
0
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018
Внимание! Если программа не работает, обновите версию!
begin
var a:=ReadAllLines('input.txt'); // массив строк
var n:=a[0].ToWords.Count; // количество чисел в строке
var x:=new real[a.Length,n]; // создана матрица нужного размера
for var i:=0 to a.Length-1 do
x.SetRow(i,a[i].ToReals); // матрица заполнена значениями
x.Println(5,1); Writeln(a.Length*5*'-'); // вывод матрицы
// получим средние по колонкам, округлим дробную часть до двух знаков
var y:=x.Cols.Select(c->Round(c.Average*100)/100).ToArray;
y.Println; // контрольный вывод средних, можно убрать
WriteAllText('output.txt',y.JoinIntoString(' ')) // вывод в файл
end.
Пример работы
7.9 8.8 1.3 4.2 7.8 -6.2
2.6 -6.6 -6.7 -8.4 1.0 -7.1
4.4 7.0 -4.2 -9.9 -0.1 3.5
4.1 -2.0 -8.5 -8.4 -7.1 -2.3
0.9 6.7 -2.4 0.4 9.0 7.2
9.8 -8.4 -6.9 1.4 4.5 -9.3
------------------------------
4.95 0.92 -4.57 -3.45 2.52 -2.37
Внимание! Если программа не работает, обновите версию!
begin
var a:=ReadAllLines('input.txt'); // массив строк
var n:=a[0].ToWords.Count; // количество чисел в строке
var x:=new real[a.Length,n]; // создана матрица нужного размера
for var i:=0 to a.Length-1 do
x.SetRow(i,a[i].ToReals); // матрица заполнена значениями
x.Println(5,1); Writeln(a.Length*5*'-'); // вывод матрицы
// получим средние по колонкам, округлим дробную часть до двух знаков
var y:=x.Cols.Select(c->Round(c.Average*100)/100).ToArray;
y.Println; // контрольный вывод средних, можно убрать
WriteAllText('output.txt',y.JoinIntoString(' ')) // вывод в файл
end.
Пример работы
7.9 8.8 1.3 4.2 7.8 -6.2
2.6 -6.6 -6.7 -8.4 1.0 -7.1
4.4 7.0 -4.2 -9.9 -0.1 3.5
4.1 -2.0 -8.5 -8.4 -7.1 -2.3
0.9 6.7 -2.4 0.4 9.0 7.2
9.8 -8.4 -6.9 1.4 4.5 -9.3
------------------------------
4.95 0.92 -4.57 -3.45 2.52 -2.37
Приложения:
Похожие вопросы
Предмет: Алгебра,
автор: gnoma06
Предмет: История,
автор: sanzhariman77
Предмет: Математика,
автор: prostohara077
Предмет: Физика,
автор: shtorm0029