如何从数组中按字母顺序获取第一个值或按字母顺序排序该数组?

时间:2019-05-29 15:07:48

标签: arrays sorting fortran min

我的姓氏字符数组

FileUtils.java

我必须在文件中写上最少的姓氏。


我找不到解决我问题的函数。 Fortran具有常规功能MINVAL,但其数组必须仅是INTEGER或REAL。

感谢任何想法:-)

UPD: GFortran显示错误

uri = Uri.parse(uri.toString().replace("https://cdvfile/", "cdvfile://localhost/"));

UPD2: 程序的主要部分

lr1.f90

character(SNAME_LEN, kind=CH_) :: Surnames(SNAME_AMOUNT) = ""

input.txt

src/main.f90:73:22:

    write (*,*) MINVAL(Surnames(:))
                      1
Error: ‘array’ argument of ‘minval’ intrinsic at (1) must be INTEGER or REAL

1 个答案:

答案 0 :(得分:1)

在错误https://gcc.gnu.org/bugzilla/show_bug.cgi?id=36313中跟踪了字符类型缺少的MINVAL,这是Fortran 2003的新功能,在Fortran 95中,这些功能仅适用于实数和整数。将您的编译器更新到GCC版本8或更高版本。

> cat minvalchar.f90 
print *,minval(["a"])
end
> gfortran-8 minvalchar.f90 
> ./a.out 
 a

请注意,此方法可能不会使用您可能需要的语言排序规则:

print *,maxval([character(4) :: "a","b","c","č","d","ď","e","é","f"])
end

> ./a.out 
 ď  

特别考虑到您现在发布的文件使用西里尔字母。我不知道您所需的字符是否以Unicode正确排序。您可能需要在Fortran中使用USC-4,即使这样,该命令也可能不合适。