Ingve
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору да научитесь уже задавать вопросы. привели два задания и одно решение, на какое из заданий решение? что такое верхняя/нижняя диагонали? отталкиваясь от главной диагонали существуют: верхнедиагональния, нижнедиагональные, наддиагональные, поддиагональные елементы. сумма каких вам надо? Относительно ввода значений матричных элементов. я понимаю что матриц 100х100 никто не будет вводить в вашем примере, на ради общности рекомендую обратить внимание на динамические массивы. Ниже программа которая расчитывает сумму элементов верхнедиагональной матрицы, порядок матрицы - динамический. Цитата: program lab_06 implicit none real (8), allocatable :: a(:,:) real (8) :: summa integer (4) :: i,j,n ! запрашиваем кол-во элементов и выделяем 2d массив необходимого порядка write(*,'("Enter order of matrix: ")',advance='no') read (*,*) n allocate (a(n,n)) call input(a) ! a = reshape( (/1.0,2.0,3.0,4.0,5.0,6.0/),(/0,n/) ) write(*,'(/,"Matrix:",/)') do i=1,n write(*,10) (a(i,j),j=1,n) end do call summa_upper_triangular_matrix(a,summa) write(*,'(/,"summa upper triangular matrix=",F6.2)') summa 10 format (<n>F6.2) end program lab_06 ! расчет суммы елементов верхнедиагональной матрицы subroutine summa_upper_triangular_matrix(a,summa) implicit none real (8), intent(in), dimension(:,:) :: a real (8), intent(out) :: summa integer (4) :: i,j,n n = size(a,1) summa = 0.0 do i=1,n do j = i,n summa = summa + a(i,j) end do end do end subroutine summa_upper_triangular_matrix ! подпрограмма ввода значений матрицы subroutine input(a) implicit none real (8), dimension(:,:) :: a integer (4) :: i,j,n n = size(a,1) write(*,'(/,"Input matrix",/)') do i=1,n do j=1,n write (*,'("a(", I1, ",", I1, ")= " )',advance='no') i,j read (*,*) a(i,j) end do end do end subroutine input | компилировалось в IF 10.1 |