回 帖 发 新 帖 刷新版面

主题:菜鸟求编一个fortran小程序

编写求n个数中最大最小值的子程序,再调用子程序求矩阵某些元素的最大最小值
“某些元素”到时可能有具体例子,比如对角线上的,第X行,第X列,正数,麻烦高手也顺便给我举个例子...矩阵是二维数组吗?那怎么转换成一维数组呢?感激不尽!!
明天要考上机了,可是我一个学期都没有学...T.T...
来这里提问菜鸟问题,就有被骂的觉悟了...但求各位帮帮忙,举手之劳...我是第一次在论坛发帖子求助,不知道最后会怎样...虽然大家都是隔着网络的陌生人,但是我想说,哪一位帮帮我,我也希望能在他困苦时尽力帮助他!留下邮箱 qq3297269@yahoo.com.cn   本人大一,女,19,向各位真心求助,绝不是哗众取宠!

回复列表 (共55个回复)

沙发

對于FORTRAN这根本就是现成的,MAXVAL和MINVAL两个函数就是做这个用的。

板凳

这个明显是征友帖

3 楼

哈哈~~~~~
董兄应征吧:)

4 楼

首先感谢一楼的帮助,虽然我不懂那两个语句……T_T……不过这是我们的期末考试题,老师大概是想考我们怎么编程,不会让我们用现成命令吧……再回复二楼,我真的不是征友……我明白这个帖子在这么专业的论坛出现真是太水了,简直就像白痴一样……可是我是真的一学期没学编程,所以才这么烂……而这门课也并不是跟我专业相关的……我也是没有办法才来这儿求助的……不知该怎么办……不管怎样感谢你,希望你相信我的解释,并且感谢你肯回复……

5 楼

哈哈,楼主不需要解释太多,董兄比较开朗,是风情万种的那种成熟男性:)

如果不能用内部函数,那简直就是对FORTRAN的一种折磨~~~~~
当然,也可以用循环来解决:)二维数组无非就是二重循环而已:)
不过你要是一点不懂的话还真不好解释了。所以嘛。。。您能说一下您现在都了解什么吗:)

6 楼

额……风情万种……-_-///……真期待……
咳咳!言归正传。其实单独求最大最小值我是会的……可是怎么结合成子程序主程序就有点迷糊了……是不是这么个顺序,先编好求正常一维数组最大最小值的function(顺便请教子例行子程序和函数子程序的区别?这里应该用哪个呢?)再开始主程序,输入一个矩阵,筛选出矩阵中符合某条件的几项(比如所有最外圈…但是这个我不会编…-_-#),再把这几个二维数组转化为一维数组,再引用子程序编?大致是这样的吗?
我是刚背完近代史上床的手机党啊~真心求指导~明天下午就考了……真的不是征友……T.T……继续向各位大神求指点!
最后,感谢楼上的热心帮助~请早点休息,我是被迫熬夜的……::>_<::

7 楼

楼主也太给力了吧,熬夜了。还弄得楼上那帮人半夜争着起来回贴,真不容易了。
好吧,就给你一个示例。
integer,parameter::n=4
integer a(n,n)
!将数组赋值a=    2    3    4    5
!        3    4    5    6    
!        4    5    6    7    
!        5    6    7    8    
do i=1,n
    do j=1,n
    a(i,j)=i+j
    end do 
end do
write(*,*)"A="
write(*,"(4i5)")A
call maxmix(n,a,max,mix)
write(*,*)max,mix
end

subroutine maxmix(n,a,max,mix)
integer n,max,mix
integer a(n*n)    !将a定义为一维数组。注意这里被调用后
        !a(1)=a(1,1),a(2)=a(2,1),a(3)=a(3,1),a(4)=a(4,1)
        !a(5)=a(1,2).........................a(8)=a(4,2)
        !a(9)=a(1,3).........................a(8)=a(4,3)
        !a(13)=a(1,4)........................a(8)=a(4,4)
        !即是按列对应关系,先把第一列对应,接着是第二列,第三列。。。。。。
max=a(1)
mix=a(1)
do i=2,n*n
    if(a(i)>max) max=a(i)
    if(a(i)<mix) mix=a(i)
end do
end

8 楼

《近代史上床》是神马课程啊:)

子程序没有返回值,函数则有返回值,它们的主要差别就是这个了。
你的思路其实也是可以的,先把二维的数据整成一维的然后再调用,或者是多次调用,并将结果存到新数组里最后再调用一次就像这样:

!整数组的:)
do i=1,n
  b(i)=mymax(a(i,:),1,m)
end do
write(*,*)mymax(b(:),1,n)

!外圈的:)
b(1)=mymax(a(1,:),1,m)   // 上
b(2)=mymax(a(n,:),1,m)   // 下
b(3)=mymax(a(:,1),1,n)   // 左
b(4)=mymax(a(:,m),1,n)   // 右
write(*,*)mymax(b(:),1,4)

!其它情况自由发挥吧:)
end

real function mymax(a,low,up)   ! a是一维数组,low是数组下界,up是上界
!以下代码自由发挥:)

9 楼

以后多来论坛泡,保证你技艺猛进~~~~~
哈哈~~~~

10 楼

谢楼上几位的指点~现在不是一窍不通了~我们2点开考,计划等会见到具体题就贴上来~做好自己的答案也贴上来求指正~(当然计划赶不上变化,到了考场做不出来也是可能的……o>_<o~……)

我来回复

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