关于Fortran90中二维数组的输入输出和计算问题

有以下数组100010206071721100020306111719100030510161920......100510810131722第一列是数组元素的行号,即序... 有以下数组
10001 02 06 07 17 21
10002 03 06 11 17 19
10003 05 10 16 19 20
......
10051 08 10 13 17 22
第一列是数组元素的行号,即序号,后面5列是该行的5个元素。
请问:
1、我要统计第二列元素的范围,即最小数到最大数,该怎么运算?、
2、我要统计相邻两行之间有多少个数是相同的,该怎样计算?
3、我要统计每行的2-6列之和,该怎么计算?
4、最关键的问题,目前是51行,如果以后我要不定期增加一行或几行,但是又不想再重复输入前面的数,这个数组该怎么定义和调用?
5、我想把所有计算结果输出到一个TXT文本文件,便于打印,该怎么写?

谢谢。
谢谢QWSFWS朋友的关注,我需要FORTRAN90来编程,C语言我一点基础都没有,拿到也看不懂,谢谢。
展开
 我来答
limdawn
2010-05-20 · TA获得超过928个赞
知道答主
回答量:110
采纳率:0%
帮助的人:74.1万
展开全部
首先,读文件,或者是在程序中输入你这51行数据
设置行数n=51,这样你后面可以直接通过变换n的值来控制数据行数的变化
parameter(n=51)
integer mm(n,6) ! 二维数组,51*6 第一列表示序号,2至5列表示数据内容
integer msum(n),num(n-1)
! msum是和,num是统计相同数的个数的数组,每两行有一个num,故为长度为n-1
open(1,file='这个数据文件',form='formatted')
do i=1,n
read(1,*) (mm(i,j),j=1,6)
enddo

max=mm(1,2)
min=mm(1,2) ! 2表示第二列,可视情况都改为3,4,5,6……
do i=1,n
if(mm(i,2)>max)then
max=mm(i,2)
endif
if(mm(i,2)<min)then
min=mm(i,2)
endif

msum(i)=0
do j=2,6
msum(i)=msum(i)+mm(i,j)
enddo
enddo
! 这样,max,min就分别是第二列元素的最大值和最小值,msum即存放每行之和

do i=1,n-1
num(i)=0
do j=2,6
do k=2,6
if(mm(i,j)==mm(i+1,k))then
num(i)=num(i)+1
endif
enddo;enddo
enddo

open(2,file='result.txt',form='formatted')
write(2,*),'max=',max,' min=',min
do i=1,n
write(2,*),i,'sum=',msum(i)
enddo
do i=1,n-1
write(2,*),i,'number of same =',num(i)
enddo

end

基本上如此,你结果并不都是一维数组,输出的时候,最好加以说明,或者分行或者分不同的文件……
另外,统计相邻两行之间有多少个数是相同的,这段程序我大概表达一下那意思,你自己看着修改。
chenhuan945
2010-05-19
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
只会回答第5个问题
可以用一个文件输出
open(unit=10,filename='out.txt')
......
write(10,*) 加要输出的变量名。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
柔美且飘逸灬萨摩Z
2010-05-17 · TA获得超过276个赞
知道小有建树答主
回答量:227
采纳率:0%
帮助的人:252万
展开全部
用什么语言?C的话可以联系!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式