Добавил:
Chupapi_Munyanya
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
program lab_5_2_variant_3
integer, parameter :: NMAX = 100
integer :: rows, cols, length
real :: matrix(NMAX,NMAX), array(NMAX), array_2(NMAX)
real :: value_1, value_2
logical :: flag
flag = .true.
write (*,*) "Введите кол-во строк и столбцов матрицы: "
read (*,*) rows, cols
write (*,*) "Введите матрицу: "
read (*,*) ((matrix(i,j),i=1,rows),j=1,cols)
write (*,*) "Введите длину массива: "
read (*,*) length
write (*,*) "Введите массив: "
read (*,*) (array(i),i=1,length)
write (*,*) "Введите значения переменных P и T: "
read (*,*) value_1, value_2
call check_array(array, length, value_1, value_2, flag)
if(flag .eqv. .true.) then
call transform_matrix_into_array(rows, cols, matrix,array_2)
write (*,*) (array_2(i),i=1,rows)
ELSE
write (*,*) "Значения масссива не лежат в пределах от Р до Т "
end if
end program lab_5_2_variant_3
SUBROUTINE check_array(array, length, value_1, value_2, flag)
integer, parameter :: NMAX = 100
integer :: length, i
real array(NMAX)
real :: value_1, value_2
logical :: flag
flag = .true.
i=1
do while(i<=length .AND. flag)
if(array(i)<value_2 .AND. array(i)>value_1) then
flag = .true.
ELSE
flag = .false.
end if
i=i+1
end do
end SUBROUTINE check_array
SUBROUTINE transform_matrix_into_array(rows, cols, matrix, array_2)
integer, parameter :: NMAX = 100
integer :: rows, cols
real :: matrix(NMAX,NMAX)
real :: array_2(NMAX)
real :: amount
do j=1, rows
amount = 0
do i=1, cols
amount = amount + matrix(i,j)
end do
array_2(j) = amount
end do
end SUBROUTINE transform_matrix_into_array
integer, parameter :: NMAX = 100
integer :: rows, cols, length
real :: matrix(NMAX,NMAX), array(NMAX), array_2(NMAX)
real :: value_1, value_2
logical :: flag
flag = .true.
write (*,*) "Введите кол-во строк и столбцов матрицы: "
read (*,*) rows, cols
write (*,*) "Введите матрицу: "
read (*,*) ((matrix(i,j),i=1,rows),j=1,cols)
write (*,*) "Введите длину массива: "
read (*,*) length
write (*,*) "Введите массив: "
read (*,*) (array(i),i=1,length)
write (*,*) "Введите значения переменных P и T: "
read (*,*) value_1, value_2
call check_array(array, length, value_1, value_2, flag)
if(flag .eqv. .true.) then
call transform_matrix_into_array(rows, cols, matrix,array_2)
write (*,*) (array_2(i),i=1,rows)
ELSE
write (*,*) "Значения масссива не лежат в пределах от Р до Т "
end if
end program lab_5_2_variant_3
SUBROUTINE check_array(array, length, value_1, value_2, flag)
integer, parameter :: NMAX = 100
integer :: length, i
real array(NMAX)
real :: value_1, value_2
logical :: flag
flag = .true.
i=1
do while(i<=length .AND. flag)
if(array(i)<value_2 .AND. array(i)>value_1) then
flag = .true.
ELSE
flag = .false.
end if
i=i+1
end do
end SUBROUTINE check_array
SUBROUTINE transform_matrix_into_array(rows, cols, matrix, array_2)
integer, parameter :: NMAX = 100
integer :: rows, cols
real :: matrix(NMAX,NMAX)
real :: array_2(NMAX)
real :: amount
do j=1, rows
amount = 0
do i=1, cols
amount = amount + matrix(i,j)
end do
array_2(j) = amount
end do
end SUBROUTINE transform_matrix_into_array
Соседние файлы в папке Коды 5.2