主题:如何让数组赋值覆盖之前的赋值?
xiaoyuan24
[专家分:100] 发布于 2012-06-27 05:30:00
如题,如何让数组赋值覆盖之前的赋值?
下面是一个简单的给数组赋值的程序,我给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个回复)
沙发
臭石头雪球 [专家分:23030] 发布于 2012-06-27 09:18:00
你把数据放在文件里。
用文件读入不是挺好么?
增加程序通用性
减少程序代码
板凳
alsoran [专家分:760] 发布于 2012-06-27 15:03:00
赋值和初始化是有区别的,初始化是编译完成后就有了值,而赋值是运行时才有值
而初始化只有一次,赋值可以有多次
3 楼
asymptotic [专家分:16630] 发布于 2012-06-27 20:55:00
Fortran 语法规定, 编译器可以任意选择一个 Data 语句来执行,不要求按顺序执行。以后别这么写了,是潜在的 bug, 请参考 《The Fortran 2003 Handbook》。
4 楼
xiaoyuan24 [专家分:100] 发布于 2012-06-27 22:18:00
谢谢你的回答,要是能用读文件的方法,就不来请教各位高手了,有的东西属商业机密,公司做出成品,不希望有任何输入。
5 楼
xiaoyuan24 [专家分:100] 发布于 2012-06-27 22:22:00
那如何写能够实现我想要得功能,谢谢!
其实我有另一种方法去修改,但是改动的地方会bi较多,最后不行了再用这种方法。
6 楼
臭石头雪球 [专家分:23030] 发布于 2012-06-27 22:36:00
你写入 Data,也做不到保密。
7 楼
xiaoyuan24 [专家分:100] 发布于 2012-06-27 22:52:00
最后公司会做成保密文件阿,我就管不了了阿。
8 楼
yeg001 [专家分:14390] 发布于 2012-06-28 00:46:00
那可不可以做成字符串数据, 用内部文件方式读取呢?
9 楼
xiaoyuan24 [专家分:100] 发布于 2012-06-28 01:43:00
方法肯定很多,我用了一种最笨的方法实现了,不过程序改动比较大,呵呵。就是很奇怪,fortran里面难道没有简单给维数有点大的数组赋值的命令吗?比如12*12数组,总不能do循环一个个输入吧(数组里的元素没有规律可循),用了data命令又不能重新赋值。
10 楼
yeg001 [专家分:14390] 发布于 2012-06-28 09:22:00
内部文件读取只需要read就可以了, 不需要用do. 数据本身没有规律, 也没办法"聪明"起来啊.
我来回复