IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> задача на матрицу, помогите исправить
-Rudolf-
сообщение 4.12.2005 11:20
Сообщение #1


Гость






"Дана вещественная матрица размером 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
сообщение 4.12.2005 11:34
Сообщение #2


Гость






Правильно говорит... Тебе надо найти номера строки и столбца, и работать с исходной матрицей:
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.
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 11:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"