Возник один вопросик: нужно сделать матрицу и посчитать в ней сумму элементов каждой строки, разделить сумму этой строки на количество элементов этой строки. Но размерность матрицы должна задаваться вручную, причем произвольно, вот как взбредет в голову, так и сделать, т.е. 2х2 или 3х10, а может и 10х3 и т.д..
Вроде, динамические массивы в Дельфях никто не отменял:
Var
mx: array of array of integer;
...
SetLength(mx, 2, 3); // <--- Получаешь матрицу 2 x 3
А я пробовал так. Сделал матрицу, но она 10х10 и задается заранее, заполняется случайным образом, а как сделать, чтобы я мог сам выбрать кол-во строк и столбцов? Пробовал задавать m и n как:
Writeln(‘m’,m);
Read(m);
Writeln(‘n’,n);
Read(n);
Но консоль после этого вылетает. В чем косяк?
Var
mx: array of array of integer;
m, n: integer;
begin
Write('n = '); Readln(n);
Write('m = '); Readln(m);
SetLength(mx, n, m);
... // <- Работаешь с матрицей
SetLength(mx, 0, 0); // <- Освобождаешь память
end.
Сделал по примеру матрицу, задаю значения i,j, а на выходе получаю матрицу из одной строки и одного значения. В чем проблема? Как сделать так, чтобы после того как задан размер матрицы, я смог задавать значения этой матрицы построчно? Random соответственно надо убрать.
Ты сам себя запутываешь этим Repeat/Until, а зачем?
Вот так:
program Matrix;Обрати внимание на индексацию - она начинается с 0...
{$APPTYPE CONSOLE}
uses
SysUtils;
var
mx: array of array of integer;
i, j: integer;
m,n:cardinal;
procedure inputmatrix;
var i,j:cardinal;
begin
Write('i = '); Readln(n);
Write('j = '); Readln(m);
SetLength(mx, n, m);
writeln;
for i := 0 to n - 1 do
for j := 0 to m - 1 do
mx[i,j]:=random(999);
end;
procedure outputmatrix;
var i,j:cardinal;
begin
for i := 0 to n - 1 do begin
for j := 0 to m - 1 do
write(mx[i,j]:6);
writeln;
end;
end;
begin
randomize;
inputmatrix;
outputmatrix;
readln;
SetLength(mx, 0, 0);
end.
Сделал матрицу с возможностью выборки её размера и ввода элементов вручную, а как посчитать среднее значение каждой строки и вывести его в отдельный вектор, после сравнить значения строк вектора и вывести максимальное значение. Я там уже начал считать сумму, но чета Никам правильно в вектор выдать не могу.