Program main

implicit none

real, allocatable:: x(:,:)

integer col, row, kol, i, j, k

open (10, file='isx.txt', status='old', err=11)

read (10, *) row, col

!чтение из файла размера матрицы

allocate (x (row, col))

! чтение матрицы из файла

call read_matr (x, row, col)

close(10)

!вывод матрицы на экран

print*,'isx matr'

print '(<col> F3.0)', ((x(i,j), j=1,col), i=1,row)

!определение количества столбцов равных первому

k = kol (x, row, col)

print '(A, I2)', ' kol= ', k

call write_res (x,row,col,k)

stop

!oбработка ошибок

11 print*, ' oshibka open isx file'

End program

!считывание матрицы из файла

Subroutine read_matr (x, n, m)

implicit none

integer,intent(in)::n, m

real,intent(out):: x(n, m)

integer i, j

read(10, *) ((x(i, j), j=1, m), i=1, n)!

End subroutine

Integer function kol (x, n, m)

implicit none

integer,intent(in)::n, m

real,intent(in)::x(n, m)

integer i,j,k

logical f

k=0

do j= 2, m

f=.true.

do i= 1, n

if (x(i, j)/= x(i, 1))then

f=.false.

exit

endif

enddo

if (f)k=k+1

enddo

kol=k

End function

!запись в файл результата

Subroutine write_res(x,n,m,k)

implicit none

integer,intent(in)::k,n,m

real,intent(in)::x(n, m)

integer i, j

open (20, file='res.txt', status='new', err=12)

write (20,'(A)'),'isx matr'

write(20, '(<m> F3.0)'), ((x(i,j), j=1,m), i=1,n)

write(20,'(A, I2,A)'),'w matrice ',k,' stolb = perwomu'

close (20)

return

12 print*,'oshibka zapisi в файл'

End subroutine

Неформатные файлы

Рассмотрим теперь неформатные файлы последовательного и прямого доступа.

Неформатный файл не может быть создан и просмотрен в текстовом редакторе. Для его создания обязательно нужна программа, т.к. данные хранятся в машинном представлении (данные передаются без преобразования).Метод доступа будет фигурировать в операторе open в спецификаторе access = ‘sequential/direct’, а форматв спецификаторе form = ' unformatted'.

Из неформатного файла одним оператором ввода можно прочитать только одну запись. Каждый оператор вывода создает одну запись.

Рассмотрим сначала неформатные файлы последовательного доступа.

Для этих файлов справедливы все правила, которые используются для обработки, корректировки, добавления и удаления текстовых файлов. Разница лишь в том, что чтение и запись осуществляется без формата. Кроме того, как уже упоминалось для их создания и просмотра нужна специальная программа.

Пример

В неформатном файле последовательного доступа хранятся вещественные числа. Удалить из файла наименьшее значение.

Удаление будем делать, используя вспомогательный файл.

Вообще лучше сделать в отдельном проекте неформатный файл и подключить его в свой проект, чтобы не создавать файл при каждом запуске программы.

!процедура создания неформатного файла


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



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