Помощь - Поиск - Пользователи - Календарь
Полная версия: задача на матрицу
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
-Rudolf-
"Дана вещественная матрица размером 7x7, все элементы которой различны. Найти скалярное произведение строки, на которой находится наибольший элемент матрицы, на столбец с наименьшим элементом.". Я так решил эту задачу:
Код

Program L7;
Const N=7;
type mas=array[1..N,1..N] of real;
    masmin=array[1..N] of real;
    masmax=array[1..N] of real;

var matr:mas;
   str:masmax;
   stolb:masmin;
   i,j,k,l:integer;
   min,max,rez,proizv:real;
Begin
    for i:=1 to N do
     begin
       for j:=1 to N do
       matr[i,j]:=random(300);
     end;
    for i:=1 to N do
     begin
       for j:=1 to N do
       write(matr[i,j]:2:0,' ');
       writeln;
       writeln;
     end;
    min:=matr[1,1];
    for i:=1 to N do
     begin
       for j:=1 to N do
       if matr[i,j]<min then  
                                      begin
                                          min:=matr[i,j];
                                          k:=j;
                                      end;
     end;
    writeln(k);
    writeln(min:2:0);
    for i:=1 to N do
     begin
       stolb[i]:=matr[i,k];
       write(stolb[i]:3:0);
     end;
    writeln;
    writeln;
    max:=matr[1,1];
    for i:=1 to N do
     begin
       for j:=1 to N do
         if matr[i,j]>max then
                                       begin
                                           max:=matr[i,j];
                                           l:=i;
                                       end;
     end;
    for j:=1 to N do
     begin
       str[j]:=matr[l,j];
       write(str[j]:3:0);
     end;
    writeln(max:2:0);
    For i:=1 to N do
     begin
           proizv:=stolb[i]*str[i];
           rez:=rez+proizv;
           writeln(rez:2:0);
     end;

    readln
end.

но преподаватель сказал, что можно обойтись меньшим числом массивов. Если кто знает как подскажите PLIZ.
P.S. Я так понял, что надо задать массив массива.
volvo
Правильно говорит... Тебе надо найти номера строки и столбца, и работать с исходной матрицей:
Program L7;
Const
N=7;
type
mas=array[1..N,1..N] of real;

var
matr:mas;
i,j,k,l:integer;
min,max,rez,proizv:real;

Begin
for i:=1 to N do begin
for j:=1 to N do begin
matr[i,j]:=random(10); { чтоб можно было проверить результат... }
write(matr[i,j]:2:0,' ');
end;
writeln;
writeln;
end;

min:=matr[1,1];
max:=matr[1,1];
for i:=1 to N do
for j:=1 to N do begin
if matr[i,j]<min then begin
min:=matr[i,j]; k:=j;
end;
if matr[i,j]>max then begin
max:=matr[i,j]; l:=i;
end;
end;

For i:=1 to N do begin
proizv := matr[l, i] * matr[i, k];
rez:=rez+proizv;
end;
writeln(rez:10:3);
readln
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.