回 帖 发 新 帖 刷新版面

主题:[转帖]求教关于二维数组的输入和计算问题,谢谢

新手请教:
有以下数组
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文本文件,便于打印,该怎么写?

回复列表 (共1个回复)

沙发

program test
implicit none
integer::i,j,k,m
integer,allocatable::a(:,:),b(:)
integer::max00,min00
read(*,*) m !行数
allocate(a(m,0:5),b(m))
open(10,file='data.txt') !数据存放在10号文件中
do i=1,m
 read(10,*) (a(i,j),j=0,5)
enddo
close(10)
open(20,file='result.txt')
!第一问
write(20,*) '第一问'
max00=maxval(a(1:m,1))
min00=minval(a(1:m,1))
write(20,*) 'interval:[',min00,max00,']'
write(20,*) ''
!第二问
 write(20,*) '第二问'
do i=2,m
 k=0
 do j=1,5
    if(a(i-1,j).eq.a(i,j))then
    k=k+1
    endif
 enddo
 write(20,*) i,k !第i行和第i-1行有k个数相同
enddo
!第三问
 write(20,*) '第三问'
do i=1,m
 b(i)=sum(a(i,1:5))
 write(20,*) b(i)
enddo
!第四问
!在第10号文件中,接着之前的数据输入后续数据
close(20)
end program test

我来回复

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