Помощь - Поиск - Пользователи - Календарь
Полная версия: И опять матрици....
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Alex7
Короче тут попалась задачка все нп те-же матрици. Как бы неичего сложного, но оранизовать цикл, в котором идет вычисление, так и не смог mega_chok.gif
Условие ее следуюшее:
Цитата
З клавиатуры ввести прямоугольную матрицу дейчтвительных чисел( максимальный размер- 22х15) Определить и напечатать номера двух строчек, введеной матрици, скалярное произведение который наибольшее.[Скалярное произведение- сумма попарных произведений одинаковых по номерам елементов этих векторов]

Буду очень благодарен за помощь, да, тут девчонка, сидит рядом со мной(ее задачка то) тоже говорит что будет благодарна! lol.gif give_rose.gif
klem4
Ну хоть что-нибудь ты сделал ? Могу дать ссылку на FAQ ... но я думаю ты уже знаешь где он.
volvo
Основной цикл:
max_scalar := -maxInt;
For i := 1 to n_lines do begin
  for j := i+1 to n_lines do begin
    scalar := 0;

    for k := 1 to n_rows do
      scalar := scalar + a[i, k]*a[j, k];

    if scalar > max_scalar then begin
      max_scalar := scalar;
      max_1 := i; max_2 := j;
    end;
  end;
end;

После этого цикла в max_1 будет номер одной строки, в max_2 - номер второй...
Alex7
Цитата
Ну хоть что-нибудь ты сделал ? Могу дать ссылку на FAQ ... но я думаю ты уже знаешь где он.

Блин, конечно сделал!
Вопервых это согласился что-бы ко мне пришла эта девчонка(хе, откажись тут....))
Вовторых попробовал составить цикл, в, но так и не понял, как организовать цикл, в котором будет сравниваться скалярное произведение всех елементов ряда.
Иначе б я не писал сюда! wink.gif wacko.gif
Alex7
Цитата
-maxInt;

Спасиб, а это что такое?
Мы такого выражения точно не брали! Или это ты такую переменную задал, тока чо там "-" ?
Ну лад имею я max_1, max_2 , но чо мне с ними то делать?? wacko.gif
Чото я сегодня совсем не варю! wub.gif nea.gif
volvo
Ничего я не задавал... это уже до меня задали, в Паскале есть такая константа, определяет максимальное число, которое можно затолкнуть в Integer... А минус - для того, чтобы первое же найденное произведение было гарантированно больше этого числа...

Цитата
Ну лад имею я max_1, max_2 , но чо мне с ними то делать??

Цитата(Задание)
Определить и напечатать номера двух строчек, введеной матрици, скалярное произведение который наибольшее

Определил... Теперь напечатай...
Alex7
Цитата
Определил... Теперь напечатай...

Понял, сенькс! ща буду пробовать)
Alex7
Огромное спасибо, что не позволили мне опозорится))). Никак не мог включить варилку мозгов, когда рядом сидит такая фигурка... wacko.gif lol.gif Это ещ детство играет наверное wink.gif
Все работает, доделано, все остались доаольны, А теперь, чтобы я таки в следующий раз, даже при таких обстоятельствах мог сам решить задачку.....
Цитата
в Паскале есть такая константа, определяет максимальное число, которое можно затолкнуть в Integer... А минус - для того, чтобы первое же найденное произведение было гарантированно больше этого числа...

Понятно, значит это вроде функции.да?
Только я не понимаю, если это макс, то как "первое же найденное произведение" может быть больше его, даже если и будет longint ? А, или ты може имеешь ввиду нижнюю границу- максимальное минимальное число для Int ?
for k := 1 to n_rows do
      scalar := scalar + a[i, k]*a[j, k];
А этим циклом мы находим скалярое двух строчек ? Если да, то значит я главный цикл понял, только всеравно сразу б его стопудово не написал б! Сложновато ме еще( Не хватает опыта работы nea.gif ...
volvo
Ну, если будет LongInt то есть MaxLongInt ...
Кстати, тот цикл, который ты привел, именно и ищет скалярное произведение...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.