Program matritsa;
uses crt;
type new=array[1..3,1..3] of integer;
var
mass:new;
max_stolb, min_stroka, summ,proizv:integer;
opred:integer;
Procedure Vvod(var m:new);
var i,j:integer;
begin
For i:=1 to 3 Do
for j:=1 to 3 do begin
write('Enter element of array mass ',i,' ',j,': ');
readln(mass[i,j]);
end;
end;
Procedure Summa(var m:new; var s:integer);
begin
s:=(m[1,1]+m[1,2]+m[1,3]+m[2,1]+m[2,2]+m[2,3]+m[3,1]+m[3,2]+m[3,3]);
writeln;
write('Summa vseh elementov massiva=',s);
readln;
end;
Procedure proizvedenie(var m:new; var p:integer);
begin
p:=0;
p:=(m[1,1]*m[1,2]*m[1,3]*m[2,1]*m[2,2]*m[2,3]*m[3,1]*m[3,2]*m[3,3]);
writeln;
write('Proizvedenie vseh elementov massiva=',p);
readln;
end;
Begin
clrscr;
Vvod(mass);
Summa(mass,summ);
proizvedenie(mass,proizv);
End.
Максимал. элемент в столбцах, и минимал. в строках
Дан двумерный массив чисел. Нужно найти максимальный элемент в столбцах, и минимальный в строках; нужно найти сумму всех элементов массива, произведение всех элементов, и определитель массива (определитель матрицы).
Решить нужно с использованием процедур/функций.
Вот что у меня получилось:
Код:
Помогите пожалуйста найти максимальный элемент в столбцах, и минимальный элемент в строках. И у меня что-то произведение не правильно находится:
Код:
p:=(m[1,1]*m[1,2]*m[1,3]*m[2,1]*m[2,2]*m[2,3]*m[3,1]*m[3,2]*m[3,3]);
[COLOR=Red]Не забывай писать язык программирования. Модератор.[/COLOR]
Минимальный элемент в столбцах:
Код:
min=m[0][0];
for(j=0;j<3;j++)
for(i=0;i<3;i++)
if(m[j]<min)min=m[j];
for(j=0;j<3;j++)
for(i=0;i<3;i++)
if(m[j]<min)min=m[j];
Максмимальный элемент в строках:
Код:
max=m[0][0];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(m[j]>max)max=m[j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(m[j]>max)max=m[j];
И еще произведение и сумму, я бы записал через циклы.
Вот с чем проблема:
Начинаю искать максимальный элемент в столбцах, и минимальный в строках:
Код:
...
Procedure Maxim_stolb_Minim_stroka(var m:new; var max,min:integer);
var i,j:integer;
begin
max:=m[1,1];{Допустим,что m[1,1] Это максим. элемент в столбцах}
min:=m[1,1];{Допустим,что m[1,1] Это минимал. элемент в строках}
For i:=1 To 3 Do begin
for j:=1 to 3 do
If m[i,j]>max then
max:=m[i,j];
end;
writeln('Maximalnii element v stolbtsah=',max);
readln;
For i:=1 To 3 Do begin
for j:=1 to 3 do
If m[i,j]<min then
min:=m[i,j];
end;
writeln('Minimalnii element v strokah=',min);
readln;
end;
Procedure Maxim_stolb_Minim_stroka(var m:new; var max,min:integer);
var i,j:integer;
begin
max:=m[1,1];{Допустим,что m[1,1] Это максим. элемент в столбцах}
min:=m[1,1];{Допустим,что m[1,1] Это минимал. элемент в строках}
For i:=1 To 3 Do begin
for j:=1 to 3 do
If m[i,j]>max then
max:=m[i,j];
end;
writeln('Maximalnii element v stolbtsah=',max);
readln;
For i:=1 To 3 Do begin
for j:=1 to 3 do
If m[i,j]<min then
min:=m[i,j];
end;
writeln('Minimalnii element v strokah=',min);
readln;
end;
У меня ощущение, что он не максимальный элемент в столбцах ищет, а вообще максимальный элемент всего массива. То же самое и про минимальный элемент в строках.
И ещё: У массива, или у матрицы знаменатель вообще существует?
Цитата:
У меня ощущение, что он не максимальный элемент в столбцах ищет, а вообще максимальный элемент всего массива.
Да видимо так и есть, судя по всему. Инициализацию максимума/минимума делай под первым For, для каждого столбца/строки берем его первый элемент, под вторым фором идем по всем элементам столбца/строки и находим макс/мин, когда проход по второму For'у оканчивается, то выводим найденный макс/мин (или делаем что надо) и идем к первому For'у для прохода следущего столбца/строки.
Не забудь где надо прописать begin ... end
Обрати внимание, чтобы пройтись по столбцу надо выбрать текущий индекса столбца и передвигаться по строка (I), а ты вроде только по строкам ходишь, чтобы пробежаться вдоль строки все наоборот: индекс для строки для одного прохода(во втором втором фор'е) постоянный, а индекс для столбцов переменный(J) ....
Код:
for(i=0;i<3;i++)
{max=m[0];
for(j=0;j<3;j++)
{ if(m[j]>max)max=m[j];}
cout<<max;
}
{max=m[0];
for(j=0;j<3;j++)
{ if(m[j]>max)max=m[j];}
cout<<max;
}