Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [General] Фортран, двумерные массивы 
:(
    Опции темы
oleeg
Дата 3.11.2010, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




[ Время генерации скрипта: 0.0627 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.