Program matrix;
Uses Crt;
type mas=array [1..100,1..100] of integer;
{+----- Ввод размерности массива -----------+}
procedure input(var X:mas; var n:integer);
var i,j:integer;
begin
writeln(' Введите размер кв. матрицы: ');
readln(n);
{+----- Заполнение массива -----------------+}
writeln('введите кв. матрицу X');
for i:=1 to n do
for j:=1 to n do
begin
write('x[',i,',',j,']= ');
readln(x[i,j]);
end;
{+----- Вывод массива на экран ----+}
begin
Writeln ('Матрица: ');
for i:=1 to n do begin
for j:=1 to n do
begin
write(' ',x[i,j],' ');
end;
writeln;
end;
end;
end;
{+----- Расчет суммы элементов строки ------------------+}
procedure f1(X:mas; n:integer; var min_i:integer);
var i,j,si:integer;
begin
min_i:=x[1,1];
for i:=1 to n do
begin
si:=0;
for j:=1 to n do
si:=si+x[i,j];
if si > min_i then
min_i:=si;
end;
end;
{+----- Вывод результата на экран ------------------+}
procedure pr3(min_i:integer);
begin
writeln('мин. сумма= ',min_i);
end;
{+----- Начало программы ------------------+}
var A:mas;
si,i,j,n,s,min_i:integer;
begin
Clrscr;
input(A,n);
f1(A,n,min_i);
pr3(min_i);
end.
Поиск минимального значения среди сумм элементов строк матрицы
Необходимо чтобы выводилось на экран значение минимальной суммы элементов, среди строк матрицы. У меня выводится максимальная сумма строки. Помогите пожалуйста.
Код:
if si > min_i then
min_i:=si;
min_i:=si;
Пробовал на < менять?)
Пробовал. Выводит первый элемент матрицы, а мне нужно минимальную сумму строки.
Код:
begin
min_i:=x[1,1];
min_i:=x[1,1];
а потом:
Код:
if si > min_i then
Ест. тут может быть проблема. Если у тебя нету в строках отрицательных эл-тов, то, скорее всего, у тебя сумма каждой строки будет больше 1го эл-та матрицы.
Как то так нужно(псевдокод):
Код:
procedure f1(X:mas; n:integer; var min_i:integer);
var i,j,si:integer;
begin
// посчитать сумму первой строки
for i:= 1 to n do
min_i:= min_i +x[1,i];
// а сюда бы ещё и проверочку на то, что n > 1
// посчитать суммы строк со 2й по n-ю
for i:=2 to n do
begin
si:=0;
// считаем сумму
for j:=1 to n do
si:=si+x[i,j];
// если она меньше текущей - сменить минимальную сумму на новую
if si < min_i then
min_i:=si;
end;
end;
var i,j,si:integer;
begin
// посчитать сумму первой строки
for i:= 1 to n do
min_i:= min_i +x[1,i];
// а сюда бы ещё и проверочку на то, что n > 1
// посчитать суммы строк со 2й по n-ю
for i:=2 to n do
begin
si:=0;
// считаем сумму
for j:=1 to n do
si:=si+x[i,j];
// если она меньше текущей - сменить минимальную сумму на новую
if si < min_i then
min_i:=si;
end;
end;