Помощь - Поиск - Пользователи - Календарь
Полная версия: задача на матрицу
Форум «Всё о Паскале» > 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.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.