Выпуск № 904 от 15.06.2009, 15:05
Администратор рассылки: Калашников О.А., Руководитель
В рассылке: подписчиков - 359, экспертов - 86
В номере: вопросов - 1, ответов - 1
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
Вопрос № 169242: Здравствуйте уважаемые эксперты, я вас не прошу решать мне задание, хотябы объясните мне логику решения, что тут к чему. Вот собственно задание. Найти и напечатать индексы максимального элемента главной диагонали матрицы с1(3;3)...
Вопрос № 169242:
Здравствуйте уважаемые эксперты, я вас не прошу решать мне задание, хотябы объясните мне логику решения, что тут к чему. Вот собственно задание. Найти и напечатать индексы максимального элемента главной диагонали матрицы с1(3;3)
Отвечает Megaloman, Практикант :
Здравствуйте, Полякова Анна Александровна. Чтобы объяснить логику решения, сначала определим хотя бы упрощенно, а что такое матрица? Двухмерная матрица, например, [C], (в Вашем случае именно такая) - это таблица с N строками и M столбцами. Сочетание N и M называется размерностью матрицы. Говорят: матрица размерностью N на M.
В Вашем случае N=M=3. Такая матрица, когда N=M называется квадратной, то есть в Вашем случае это квадратная матрица размерностью 3 на 3. Для наглядности можете
нарисовать табличку на листочке.
Строки и столбцы матрицы нумеруются. Для определённости, номер строки обозначим i (где i= 1,2 ... N, в Вашем случае N=3) номер столбца обозначим j (где j= 1,2 ... N, в Вашем случае N=3) Эти номера называются индексами.
Элемент матрицы однозначно определяется номером строки и столбца, на пересечении которых он расположен (то есть его индексами). Записывается C(i,j) (в книгах i и j около обозначения матрицы обыч
но пишут без скобок и запятой более мелким шрифтом) То есть, если пишем С(2,3), то это обозначает элемент во второй строке третьем столбце матрицы.
Главной диагональю квадратной матрицы называется совокупность её элементов, у которых номер строки равен номеру столбца, то есть i=j При программировании аналогом двухмерной матрицы является двухмерный массив чисел.
Для решения Вашей задачи определим размерность матрицы (обозначим её N), и определим массив, где эта матрица будет храниться. Предположим,
в матрице хранятся целые числа. Тогда:
DIM N AS INTEGER N = 3
REDIM C1(1 TO N, 1 TO N) AS INTEGER
Для описания массива я применил оператор REDIM, так как он позволяет описать размерность массива в зависимости от переменной (у нас это N) В описании мы указали, что индексы меняются от 1 до N. Тип чисел в массиве -целый (т.е. INTEGER)
Далее надо каким-то образом занести в массив значения его элементов. Можно, напри
мер, организовать ввод элементов с клавиатуры, прочесть из файла, но я пойду по самому лёгкому пути - определю эти элементы в программе с помощью оператора присваивания. Значения ставлю самым случайным образом.
После определения входных данных удобно их отобразить на экране.
А далее - собственно решение задачи: мы должны последовательно просмотреть все элементы на диагонали и выбрать среди них максимальный.
При этом запомнить его индексы. Удобно для такого обзора применить оператор для организации цикла For. Максимальное значение элемента запомним в переменной СMAX, значение индекса максимального элемента запомним в переменной M. Для начала перед циклом для определённости напишем, что индекс максимального элемента равен 1, и, естественно, для начала примем, что максимальное значение СMAX равно значению элемента С1(1,1).
Далее в цикле мы будем просмат
ривать все диагональные элементы матрицы (помним, матрица у нас хранится в массиве). Если некий элемент будет больше, чам имеющееся значение СMAX, мы запомним это значение (то есть переопределим переменную CMAX этим новым значением) Одновременно запомним индекс найденного элемента (то есть переопределим переменную M новым значением)
После цикла получим искомый результат, который и отобразим на экране.
Вот пример программы.
Код:
DIM N AS INTEGER, i AS INTEGER, j AS INTEGER, CMAX AS INTEGER, M AS INTEGER N = 3
REDIM C1(1 TO N, 1 TO N) AS INTEGER
C1(1, 1) = 1 C1(1, 2) = 55 C1(1, 3) = -31
C1(2, 1) = 45 C1(2, 2) = 329 C1(2, 3) = 76
C1(3, 1) = -5 C1(3, 2) = -14 C1(3, 3) = 48
CLS PRIN
T PRINT "Матрица C1(i,j)" PRINT "------------------"
FOR i = 1 TO N FOR j = 1 TO N PRINT USING "######"; C1(i, j); NEXT PRINT NEXT
PRINT "------------------"
M = 1 CMAX = C1(M, M)
FOR i = 1 TO N IF C1(i, i) > CMAX THEN CMAX = C1(i, i) M = i END IF NEXT
PRINT "Максимальное значение диагонального элемента матрицы" PRINT "C1(i,i)="; PRINT USING
"######"; CMAX PRINT PRINT "При значении индекса i ="; PRINT USING "##"; M
----- Нет времени на медленные танцы
Ответ отправил: Megaloman, Практикант
Ответ отправлен: 10.06.2009, 20:34
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 250778
на номер 1151 (Россия) |
Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Нам очень важно Ваше мнение об этом выпуске рассылки. Вы можете оценить этот выпуск по пятибалльной шкале, пройдя по ссылке: оценить выпуск >>
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.