发布时间:2023-11-06 03:12来源:www.sf1369.com作者:宇宇
数据文件名1.dat,长度line
! 这两个文件用来存最终分类结果
open(11,file = A.dat,action = 'write',status='new')
open(12,file = B.dat,action = 'write',status='new')
open(1,file = 1.dat,action='read',status='old')
do i = 1,line
read(1,*) x, data ! x 代表你要分的类别,data是后面的数据,可根据数据类型需要更改
if(x==A) then
write(11,*) x,data ! * 位置可以根据数据的类型改
elseif(x==B)then
write(12,*) x,data ! * 位置可以根据数据的类型改
endif
enddo
close(1)
close(11)
close(12)
方法一,使用 obj创建两个工程。其中一个 C ,其中一个 Fortran把被调用的工程编译(但不链接),得到一个 obj 文件把 obj 文件添加到需调用的工程中。链接。方法二,使用 lib创建两个工程。其中一个 C ,其中一个 Fortran(被调用的创建为静态库 lib)把被调用的工程编译,链接,得到一个 lib 文件把 lib 文件添加到需调用的工程中。再次链接。
这通常不是由不同的计算机引起的,而是不同的编译器和操作系统引起的。
每个编译器对语法的检查程度不同,对堆栈的分配方式不同。
这个错误是堆栈溢出,这通常发生在循环较多的大型程序中,特别是对于递归函数调用,或者大型数组应用的程序里。
你可以有两条途径解决:
1.减少堆栈的使用。主要通过把固定大小的数组改为可分配数组来解决。
2.增加堆栈的大小。这是一个对编译器的操作。需要你翻阅你所使用的编译器的说明书(帮助文档)来确定具体的操作。
以Compaq Visual Fortran为例:
选Project => Settings => Link => Category: Output =>
Stack allocations
Reserve: 这里填新值(默认为1M,若需要10M,则填10000000)
如果你使用其他的编译器,你也可以追问,告诉我你的编译器品牌和版本。我看是否熟悉它。
自然对数是 log(x)
十为第的对数是 log10(x)
其他底的对数,用换底公式。