Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Фортран / Коды 5.2 / 4 вариант

.txt
Скачиваний:
0
Добавлен:
16.05.2024
Размер:
1.7 Кб
Скачать
program lab_5_2_variant_4

integer, parameter :: NMAX = 100
integer :: rows, cols, zero_quantity
real :: matrix(NMAX,NMAX)
real :: matrix_sum
logical :: flag

zero_quantity = 0
flag = .true.

write (*,*) "Введите кол-во строк и столбцов матрицы: "
read (*,*) rows, cols

write (*,*) "Введите матрицу: "
read (*,*) ((matrix(i,j),i=1,rows),j=1,cols)

call check_matrix(rows, cols, matrix, zero_quantity, flag)

if(flag .eqv. .true.) then
matrix_sum = sum_elements_upper_main_diagonal(rows, cols, matrix)
write (*,*) "Сумма элементов выше и находящихся на главной дивгонале равна: "
write (*,*) matrix_sum
else
write (*,*) "Ошибка"
end if


end program lab_5_2_variant_4




SUBROUTINE check_matrix(rows, cols, matrix, zero_quantity, flag)

integer, parameter :: NMAX = 100
integer :: rows, cols, i, zero_quantity
real :: matrix(NMAX,NMAX)
logical:: flag

flag = .true.

i=1
do while(i<=rows .AND. flag)
zero_quantity = 0
do j=1,cols
if(matrix(i,j)==0) then
zero_quantity = zero_quantity + 1
end if
end do
if(zero_quantity<2) then
flag = .true.
else
flag = .false.
end if
i=i+1
end do

end SUBROUTINE check_matrix


real function sum_elements_upper_main_diagonal(rows, cols, matrix) result(amount)

integer, parameter :: NMAX = 100
integer :: rows, cols
real :: matrix(NMAX,NMAX)

amount = 0

do i=1, rows
amount = amount + matrix(i,i)
end do


do i=1, rows
do j=i+1, cols
amount = amount + matrix(j,i)
end do
end do

end function
Соседние файлы в папке Коды 5.2