求助一段简单的fortran代码

因为需要急用,之前又没学过fortran,所以特来求助。现有1.txt文件,其中数据为100行3列的实数,需要将每一行的数据作比较,当每一行的三个数有两个相等时,把他们放... 因为需要急用,之前又没学过fortran,所以特来求助。现有1.txt文件,其中数据为100行3列的实数,需要将每一行的数据作比较,当每一行的三个数有两个相等时,把他们放在每一行的第一第二个位置,不等的数放在每行的最后,这样得到的数据保存在2.txt中。每行数据已知有两个相等,就是要实现交换整理顺序的目的,希望能得到比较详细的代码和解释语句,非常感谢了。在百度知道的财富值不多,麻烦了! 展开
 我来答
把盏饮寂寞
推荐于2016-10-07 · TA获得超过405个赞
知道小有建树答主
回答量:166
采纳率:0%
帮助的人:83.2万
展开全部

根据你的描述,在每行中只需要判断三次,并作相应的位置调整即可:

  1. 若1,2相等,则不管3是不是和1,2 相等,都不需要调整三个数的位置;

  2. 若1,3相等,则不管2是不是和1,3相等,只需要调整2和3的位置;

  3. 若2,3相等,则不管1是不是和2,3相等,只需要调整1和3的位置;

则编程思路如下:


PROGRAM main
IMPLICIT NONE
INTEGER,PARAMETER::Col=3
INTEGER::i,j,Line,err
REAL*8,ALLOCATABLE::A(:,:)
REAL*8::temp,errf

 

errf=1.0E-8                                         !判断两实数是否相等
Line=100                                             !输入文件的列数
ALLOCATE(A(Line,Col),stat=err)       !开辟空间
IF(err/=0)GOTO 997
OPEN(10,file='1.txt')                             !指定输入文件名

 

READ(10,*)((A(i,j),j=1,Col),i=1,Line)    !读入文件中的数据
CLOSE(10)                                          !关闭文件

DO i=1,Line                                          !逐行判断行内的三个数是否需要交换
    IF(abs(A(i,1)-A(i,2))>errf)THEN            !若条件不满足,则一、二相等,结束当前行判断进入下一行;若条件满足,则一、二不等,需判断其他情况。
        IF(abs(A(i,1)-A(i,3))>errf)THEN         !若条件不满足,则一、三相等,交换二、三位置,结束当前行判断进入下一行;若条件满足,则一、三不等,需判断其他情况。
            IF(abs(A(i,2)-A(i,3))>errf)THEN     !若条件不满足,则二、三相等,交换一、三位置,结束当前行判断进入下一行;若条件满足,则二、三不等。且此时已判断出一、二、三全不等,不交换位置。
                WRITE(*,*)"第",i,"行没有相等的实数"
            ELSE
                temp=A(i,1)
                A(i,1)=A(i,3)
                A(i,3)=temp
            ENDIF
        ELSE
            temp=A(i,2)
            A(i,2)=A(i,3)
            A(i,3)=temp
        ENDIF
    ENDIF
ENDDO

OPEN(10,file='2.txt')                   !指定输出文件名
WRITE(10,*)((A(i,j),j=1,Col),i=1,Line)  !向文件中写数据
CLOSE(10)                               !关闭文件

GOTO 1000
997 WRITE(*,*)"PROGRAM开辟数组时内存不足"
STOP
1000END PROGRAM main

 

算例,(只给了5行数据):

1.txt

 0.1     0.1     2.0
0.2     0.3     0.2
0.4     0.6     0.6
0.8     0.5     0.6
0.4     0.4     0.4

 

2.txt

  0.100000000000000       0.100000000000000        2.00000000000000    
  0.200000000000000       0.200000000000000       0.300000000000000    
  0.600000000000000       0.600000000000000       0.400000000000000    
  0.800000000000000       0.500000000000000       0.600000000000000      
  0.400000000000000       0.400000000000000       0.400000000000000    

AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式