回 帖 发 新 帖 刷新版面

主题:如何让数组赋值覆盖之前的赋值?

如题,如何让数组赋值覆盖之前的赋值?

下面是一个简单的给数组赋值的程序,我给a数组赋值两次,希望a数组的值能够是第二次赋的值,但是a数组的值仍然是2,3,4,5。

请教应该如何实现。我这么问是有原因的,请不要纠结于动机。以下只是个例子,在我的程序里a数组的维数是12*24。目前我所能想到的就是用data命令简化程序。如果不用data,又能简化程序并且能够实现我所想要的功能那更好!!

谢谢各位!!

PROGRAM MAIN
              
      INTEGER a(4)
        
       
      data (a(i),i=1,4)/2,3,4,5/
      data (a(i),i=1,4)/2,4,4,7/
    
      write(*,*) a
      
      END

回复列表 (共10个回复)

沙发

你把数据放在文件里。

用文件读入不是挺好么?

增加程序通用性
减少程序代码

板凳

赋值和初始化是有区别的,初始化是编译完成后就有了值,而赋值是运行时才有值
而初始化只有一次,赋值可以有多次

3 楼

Fortran 语法规定, 编译器可以任意选择一个 Data 语句来执行,不要求按顺序执行。以后别这么写了,是潜在的 bug,  请参考 《The Fortran 2003 Handbook》。

4 楼


谢谢你的回答,要是能用读文件的方法,就不来请教各位高手了,有的东西属商业机密,公司做出成品,不希望有任何输入。

5 楼


那如何写能够实现我想要得功能,谢谢!
其实我有另一种方法去修改,但是改动的地方会bi较多,最后不行了再用这种方法。

6 楼

你写入 Data,也做不到保密。

7 楼


最后公司会做成保密文件阿,我就管不了了阿。

8 楼

那可不可以做成字符串数据, 用内部文件方式读取呢?

9 楼


 方法肯定很多,我用了一种最笨的方法实现了,不过程序改动比较大,呵呵。就是很奇怪,fortran里面难道没有简单给维数有点大的数组赋值的命令吗?比如12*12数组,总不能do循环一个个输入吧(数组里的元素没有规律可循),用了data命令又不能重新赋值。

10 楼

内部文件读取只需要read就可以了, 不需要用do. 数据本身没有规律, 也没办法"聪明"起来啊.

我来回复

您尚未登录,请登录后再回复。点此登录或注册