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 элементу в строке, либо каждая строка матрицы на отдельной строке в файле, если стоит неявный цикл ввода по строкам). Если при вводе в списке ввода нет неявного цикла ввода по строкам, то следует помнить, что элементы матрицы хранятся в памяти по столбцам и тогда, элементы матрицы вводятся в соответствующем порядке.