У меня есть массив символов с фамилиями
character(SNAME_LEN, kind=CH_) :: Surnames(SNAME_AMOUNT) = ""
, и я должен написать в файл минимальную фамилию по алфавиту.
Я не могу найти функцию для своей задачи,Fortran имеет обычную функцию MINVAL, но массив для него должен быть только INTEGER или REAL.
Спасибо за все идеи: -)
UPD: GFortran показывает ошибку
src/main.f90:73:22:
write (*,*) MINVAL(Surnames(:))
1
Error: ‘array’ argument of ‘minval’ intrinsic at (1) must be INTEGER or REAL
UPD2: Основная часть программы
lr1.f90
program lr1_1
implicit none
integer, parameter :: CH_= Selected_Char_Kind("ISO_10646")
character(*), parameter :: E_ = "UTF-8"
integer, parameter :: SNAME_AMOUNT = 23, SNAME_LEN = 15, TEL_LEN = 10
character(:), allocatable :: input_file, output_file
character(SNAME_LEN, kind=CH_) :: Surnames(SNAME_AMOUNT) = ""
character(TEL_LEN, kind=CH_) :: Tel(SNAME_AMOUNT) = ""
integer :: In, Out, IO, i, j
input_file = "input.txt"
output_file = "output.txt"
open (file=input_file, encoding=E_, newunit=In)
read (In, '(3(a), 3(a))', iostat=IO) (Surnames(i), Tel(i), i = 1, SNAME_AMOUNT)
close (In)
write (*,*) MINVAL(Surnames(:))
end program lr1_1
input.txt
Дудиков 9111630001
Тихонов 9111630002
Степин 9111630003
Садовникова 9111630004
Воробъёва 9111630005
Дудиков 9111630006
Тихонов 9111630007
Степин 9111630008
Садовникова 9111630009
Воробъёва 9111630010
Петров 9111630011
Фёдоров 9111630012
Петров 9111630013
Воробъёва 9111630014