Консультация № 188293
01.12.2015, 20:48
0.00 руб.
0 0 0
Здравствуйте! Прошу помощи в следующем вопросе:
//Дана матрица размера mxn. Определить числа равные соответственно наименьшим значениям элементов строк. Найти сумму элементов одномерного массива b.

program lab_4;

uses
graphABC;

type
myArray = array of array of integer;

function setArr(var arr: myArray; m,n:integer): myArray; //функция, возвращающая дополненный массив arr на m строк, n столбцов
var
m_prev, n_prev: integer;
begin
if high(arr) = -1 then
begin
setLength(arr, 1);
setLength(arr[0], 1);
arr[0,0]:=100;
end;
m_prev := high(arr);
n_prev := high(arr[0]);
setLength(arr, m);
for var i:=low(arr) to high(arr) do
begin
setLength(arr[i], n);
for var j:=n_prev+1 to high(arr[i]) do
begin
arr[i,j] := random(10,99);
end;
arr[i,0] := arr[i].Min;
end;
for var i:= m_prev+1 to high(arr) do
begin
setLength(arr[i], n);
for var j:=low(arr) to high(arr[i]) do
begin
arr[i,j] := random(10,99);
end;
arr[i,0] := arr[i].Min;
end;
result := arr;
end;

function summ(arr: myArray): integer;
begin
for var i:= low(arr) to high(arr) do
result += arr[i,0];
end;

procedure drawArray(arr: myArray);//процедура вывода на экран
var x,y:integer;
begin
x:= 0;
textOut(x,y,'F1-строку');
textOut(x,y+16,'F2-столбец');
textOut(x,y+32,'Сумма= ' + intToStr(summ(arr)));
y:= 49;
window.Width := arr[0].Length*31;
window.Height := arr.Length*31+49;
for var i:=low(arr) to high(arr) do
begin
for var j:=low(arr[i]) to high(arr[i]) do
begin
if (i = j) and (high(arr) = high(arr[0])) then setBrushColor(clYellow);
if (i+j = high(arr)) and (high(arr) = high(arr[0])) then setBrushColor(clRed);

Rectangle(x,y,x+30,y+30);
DrawTextCentered(x,y,x+30,y+30,arr[i,j]);
x += 31;
setBrushColor(clGray);
end;
x:=0;
y += 31;
end;
end;

var
arr : myArray;
m,n: integer;
key: integer;

procedure keyDown(key:integer);
begin
case key of
VK_F1 :
begin
inc(m);
end;
VK_F2 :
begin
inc(n);
end;
end;
clearWindow;
drawArray(setArr(arr,m,n));
end;

begin
try
writeln('Введите m и n');
readln(m,n);
clearWindow;
setBrushColor(clGray);
drawArray(setArr(arr,m,n));
onKeyDown := keyDown;
except
on System.FormatException do writeln('Введите целое число');
end;
end.
можте написать комментарии к коду?

Обсуждение

Форма ответа