![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Павел |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Написал процедуру нахождения максимальных элементов и их индексов в
одномерном массиве. Код Procedure max_sled (i: integer; var maxX: real); var k: integer; max, x: real; begin max:=l[i]; for i:=1 to 12 do begin if max<l[i] then max:=l[i]; end; for i:=1 to 12 do begin if l[i]=max then begin x:=i; writeln('Index of the maximum element ',x:4:2); maxX:=x; end; end; end; {max_sled} Вызываю процедуру. Код max_sled (x, maxX); и потом у меня там идут выводы массивов Код if maxX=1 then begin vozr (a1, b2, c12); writeln ('Matrix c12'); out_array (a1, b2, c12); end; if maxX=2 then begin vozr (a1, b3, c13); writeln ('Matrix c13'); out_array (a1, b3, c13); end; И так до 12 элемента. Вообще весь этот одномерный массив состоит как-бы из сумм на главной диагонали у 12 массивов из моей курсовой, и мне надо найти все максимальные следы матриц и вывести их на экран упорядочив по возрастанию злементы их главных диагоналей. Вобщем проблема - как мне запомнить все эти элементы, вот эта строка просто пишет на экране какие эл-ты максимальные Код writeln('Index of the maximum element',x:4:2); , но потом в x остается одно последнее максимальное значение наоснове которого выводится только последний упорядоченный массив, но мне то нужно их все вывести. Как это можно сделать? Может я сумбурно объяснил, но я файлик прикрепил там все видно. Сообщение отредактировано: Павел - 18.05.2004 15:34 Прикрепленные файлы ![]() |
![]() ![]() |
Павел |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Спасибо за помощь, файлик я прикрепил, посмотри может что подскажешь.
Там я еще ошибку нашел. Была задана задача: Даны четыре вещественные матрицы произвольной размерности (размерность вводится пользователем). Вычислить все возможные произведения матриц. Упорядочить по возратанию элементы главной диагонали той из полученных матриц, след которой является наибольшим (следом матрицы называется сумма элементов главной диагонали). Если в результате вычисления произведений получена одна матрица, применить к ней указанное упорядочение. Программу организовать в виде вызовов необходимых подпрограмм (процедур или функций). Предусмотреть обработку ошибок и удобный интерфейс. Сегодня доделал, если не обращать внимания на процедуру max_sled ![]() В некоторых случаях перемножения матриц выдается ошибочный результат. Если умножать матрицу i,j 3X3 на 3X4 получается матрица 3X4, стороны одной - a1,b1, другой - a1,b2, значит стороны полученной матрицы будут a1,b2, и потом, когда вызываю процедуру упорядочения главной диагонали по возрастанию получается что упорядочение идет for i:=1 to b-1 do, в данном случае получается до 3 (b2 это 4 и 4-1=3), но диагональ то состоит из 3 чисел, матрица ведь не квадратная. Получается ошибка, максимальное число становится нолем и уходит вверх, остальные остаются на своих местах. Можно ли тут что-то сделать без глобальных переделок программы? |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 5:54 |