24小时热门版块排行榜    

查看: 11009  |  回复: 157
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

maomao1210

金虫 (正式写手)

[交流] 【交流】Fortran语言答疑专帖 已有46人参与

帖主寄言


其实语言并不是最重要的,形势的载体而已,fortran擅长工程计算,因为工作需要,偶尔用用fortran。在此开贴目的有二:

第一,希望能和大家交流的同时提高和丰富自己;

第二,认识来自五湖四海的朋友。

资料目前还没有整理,有机会整理上传一些。呵呵。


[ Last edited by nono2009 on 2009-11-18 at 10:34 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qwer_2009

铜虫 (小有名气)

★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖
微尘、梦想(金币+2): 欢迎常来程序语言版,鼓励新虫多发话题! 2011-04-19 15:15:09
program main
implicit none
type node
real x   !设置随机数
type(node),pointer::next
end type
type(node),pointer::head,q,p
real rand
integer i,j
integer::m=0,n=0


call random_seed( )
nullify(head)


do i=1,10
call random_number(rand)
allocate(q)
q%x=rand
q%next=>head
head=>q
end do

q=>head
do while(associated(q))
print*,q%x
q=>q%next
end do

!判断是否大于0.50
q=>head

do while(associated(q))


if(q%x<0.50.and.associated(q,head))then
n=n+1  !判断小于0.5的个数
head=>q%next
deallocate(q)
q=>head
else if(q%x<0.50.and..not.associated(q,head))then
n=n+1
p=>q%next
deallocate(q)
q=>p
else
m=m+1
q=>q%next
end if

end do


write(*,*) "大于0.5的个数m=", m
write(*,*) "小于0.5的个数n=", n

!输出大于0.5的数
q=>head
do while(associated(q))

print*,q%x
q=>q%next
end do

end

请大家帮忙看看这个程序问题出在哪里了,在输出m和n的值时还是正确的,为什么加上最后几句 显示大于0.5的数时就会无限循环下去,而且得到的结果还是错误的呢,谢谢
104楼2011-04-19 11:06:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 158 个回答

stereochemistry


小木虫(金币+0.5):给个红包,谢谢回帖交流
你好,最近写程序遇见一个问题,一个对称矩阵想线性存储,请问怎么实现呢?
2楼2009-06-01 12:32:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★ ★ ★
wangen994(金币+2,VIP+0):鼓励一下,哈哈 6-4 11:55
gwdavid(金币+3,VIP+0):辛苦了!答疑帖加大奖励力度!;) 6-7 10:32
wangen994(金币+0,VIP+0):请你讲九月份十月份的参与应助的帖子整理附在http://emuch.net/bbs/viewthread.php?tid=1358729&fpage=1后面,以便发放津贴 11-9 19:00
哦。我给你举个例子吧,比如对称矩阵 A[3,3]
                              A(1,1)     A(1,2)     A(1,3)
                              A(2,1)     A(2,2)     A(2,3)
                              A(3,1)     A(3,2)     A(3,3)
只要存储成一个一维数组即可: B(1)=A(1,1),B(2)=A(2,1),B(3)=A(2,2), B(4)=A(3,1),B(5)=A(3,2),B(6)=A(3,3).
还要记住这个: 行和列与存储该值的关系为:II=MAX(I,J)*(MAX(I,J)+1)/2+MIN(I,J), 那么B(II)==A(I,J).
不知道我讲的能听懂与否。如果不懂,继续发问。
3楼2009-06-01 12:41:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

anbb1009

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
我同意楼上的观点,因为我以前也这样做过,而且效果不错,但顺便问一下:目前fortran中用的最好的求 非线性方程一组实根的方法有哪几种,有没有现成的子程序?谢谢
4楼2009-06-05 14:35:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见