Integer function max_el name)

implicit none

character(*), intent(in):: name

integer max, x

open(2, file=name)

read(2, *),x

max= x

do while (.not. eof (2))

read(2,*)x

if (x>max) max=x

enddo

close(2)

max_el = max

End function max_el

!замена максимумов и нахождение количества замен

Integer function work (name, max)

implicit none

character(*), intent(in):: name

integer, intent(in):: max

integer k, x

! замена максимумов

open (2, file = name)

open (3, file= 'wrm.txt', status='scratch')

k=0

do while (.not. eof (2))

read(2,*) x

if (x == max) then

x=999

k=k+1

endif

write(3,*) x

enddo

! нахождение количества замен

rewind(2)

Rewind(3)

do while (.not. eof (3))

read(3,*) x

write(2,*) x

enddo

close(2)

close(3)

work=k

End function work

! дозапись в текстовый файл

Subroutine write_file (name, k)

integer, intent(in)::k

character(*), intent(in)::name

open(10, file=name, access='append')

write(10, *) k

close(10)

End subroutine

2-ой вариант программы

(с subroutine work (name, max))

program main

implicit none

integer max, res, max_el, work

character(80) namein, nameout

print *, 'bb imj isx file'

read*, namein

max= max_el (namein)

call work (namein, max)

end program

Integer function max_el (name)

implicit none

character(*), intent(in):: name

integer max, x

open(2, file=name)

read(2, *),x

max= x

do while (.not. eof (2))

read(2,*)x

if (x>max) max=x

enddo

close(2)

max_el = max

end function max_el

Subroutine work (name, max)

implicit none

character(*), intent(in):: name

integer, intent(in):: max

integer k, x

open (2, file = name)

open (3, file= 'wrm.txt', status='scratch')

k=0

do while (.not. eof (2))

read(2,*) x

if (x == max) then

x=999

k=k+1

endif

write(3,*) x

enddo

rewind(2)

rewind(3)

do while (.not. eof (3))

read(3,*) x

write(2,*) x

enddo

close(2)

close(3)

open(2, file=name, access='append')

write(2, *) k

close(2)

End subroutine

Пример.

В текстовом форматном файле хранится вещественная матрица, причем ее размер записан в первой записи. В остальных записях построчно хранятся элементы матрицы. Определить сколько столбцов в матрице равны первому. На экран вывести матрицу, количество столбцов, а также записать результат в текстовый файл.

В файле элементы матрицы можно располагать в порядке следования элементов по строкам (либо все элементы в одной строке файла, линейно, либо по 1 элементу в строке, либо каждая строка матрицы на отдельной строке в файле, если стоит неявный цикл ввода по строкам). Если при вводе в списке ввода нет неявного цикла ввода по строкам, то следует помнить, что элементы матрицы хранятся в памяти по столбцам и тогда, элементы матрицы вводятся в соответствующем порядке.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: