Шустрый

Профиль
Группа: Участник
Сообщений: 70
Регистрация: 27.11.2006
Репутация: нет Всего: нет
|
Всем привет. Помогите, пожалуйста, решить задачку. Текст задания: I. Назовем допустимым преобразованием матрицы перестановку двух строк или двух столбцов. С помощью допустимых преобразований добиться того, чтобы наибольший по модулю элемент матрицы рас-полагался в ее левом верхнем углу. Вывести преобразованную матрицу после каждой перестановки (строки или столбца). II. Составить и вывести одномерный массив из средних арифметических значений элементов с нечетными индексами столбцов в каждой строке преобразованной матрицы. Собственно, некоторые наработки есть, но не знаю, как дальше продолжить. Спасибо. Код | Program Matrix ! ñîãëàñíî áëîê-ñõåìå, ïðèâåäåííîé íèæå ! ñòóäåíò Êóçíåöîâ Î. ãðóïïà ¹5350 ðàáîòà ¹1,7 âàðèàíò ¹19 Implicit None Integer,Allocatable,dimension(:,:):: M ! äèíàìè÷åñêàÿ ìàòðèöà Integer,Allocatable,dimension(:):: B ! äèíàìè÷åñêèé ìàññèâ Integer,Allocatable,dimension(:):: tempMas ! âðåìåííûé ìàññèâ äëÿ çàïèñè â íåãî òåêóùåãî ñòîáëöà Integer stroka, stol ! ðàçìåðû ìàòðèöû ïî èçìåðåíèÿì Integer i, j ! ïåðåìåííûå öèêëîâ Integer max !íàèáîëüøèé ïî ìîäóëþ ýëåìåíò Integer max_i !èíäåêñ i íàèáîëüøåãî ýëåìåíòà ìàòðèöû ïî ìîäóëþ Integer max_j !èíäåêñ j íàèáîëüøåãî ýëåìåíòà ìàòðèöû ïî ìîäóëþ
Open(1,FILE='In.txt') ! ôàéë ñ èñõîäíîé ìàòðèöåé Open(2,FILE='Out.txt') ! ðåçóëüòèðóþùèé ôàéë Read(1,*)stroka,stol ! ââîä ðàçìåðîâ (ñòðîê-M, ñòîëáöîâ-N) Write(2,*)"Êîëè÷åñòâî còðîê",stroka Write(2,*)"Êîëè÷åñòâî ñòîáëöîâ ",stol Allocate(M(1:stroka,1:stol),B(1:stol))!ðàçìåùåíèå äèíàìè÷åñêèõ ìàññèâîâ â ïàìÿòè ! ââîä ìàòðèöû è àíàëîãè÷íî, òîëüêî ñ ôîðìàòîì, - âûâîä !Read(1,*)(A(i,:),i=1,M) ! íåÿâíûé öèêë ïî ñåêöèÿì-ñòðîêàì ìàòðèöû ! ñ÷èòûâàíèå ìàññèâà do i=1,stroka read(1,*)(M(i,j),j=1,stol) enddo write(2,*)"Èñõîäíàÿ ìàòðèöà" do i=1,stroka write(2,*)(M(i,j),j=1,stol) enddo
max = M(1,1) !ñíà÷àëà óñòàíîâèì ìàêñèìàëüíûé ýëåìåíò ïî ìîäóëþ ïåðâûì ýëåìåòîì ìàòðèöû do i=1,stroka do j=1,stol if (ABS(M(i,j))>abs(max)) then max = M(i,j) max_i = i max_j = j endif enddo enddo write(2,*) "Ìàêñèìàëüíûé ýëåìåíò â ìàòðèöå ïî ìîäóëþ: ",max write(2,*) "Èíäåêñ max_i = ",max_i," è max_j = ",max_j, " ìàêñèìàëüíîãî ýëåìåíòà â ìàòðèöå ïî ìîäóëþ"
! òåïåðü íàäî ïåðåäâèíóòü ýëåìåíò â ìàòðèöå òàê, ÷òîáû îí îêàçàëñÿ â ëåâîì âåðõíåì óãëó. ! Ïðîùå âñåãî ýòî ñäåëàòü, ïåðåäâèãàÿ ñíà÷àëà äî óïîðà âëåâî ýëåìåíò ìàòðèöû ïî ñòîëáöà, à ïîòîì äî óïîðà ââåðõ ïî ñòðîêàì tempMas(1) = 1
do j=1,max_j tempMas(1) = 1 ! Write(2,*)tempMas enddo
Deallocate(M)! îñâîáîæäåíèå äèíàìè÷åñêîé ïàìÿòè End Program Matrix
|
|