24小时热门版块排行榜    

查看: 342  |  回复: 3
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

qwer_2009

铜虫 (小有名气)

[求助] 菜鸟提问

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的数时就会无限循环下去,而且得到的结果还是错误的呢,谢谢
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jiayanhui

木虫 (正式写手)

大木虫


微尘、梦想(金币+1): 谢谢参与…… 2011-04-20 15:48:57
应该为p%next=q%next

如果成立时,else后面写成p=q,q=>q%next 应该就可以了
春天来了
3楼2011-04-19 17:00:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

dingxb

金虫 (正式写手)

迷途书虫

【答案】应助回帖

★ ★
微尘、梦想(金币+2): 谢谢参与应助! 2011-04-19 15:18:51
qwer_2009(金币+10): 谢谢,最后不是死循环,m和n的判断是对的,是中间判断是指针指示出错了,谢谢你哈 2011-04-19 17:03:15
ò????????@????h???????h?? ??l???????????So???????F?o????h????}??

???Y???e?`???????lz?????????????Y?????e?`???

?????
write(*,*) "????0.5?????m=", m
write(*,*) "С??0.5?????n=", n

??z?????P???????????

????????????t???????????

do while(associated(q))

print*,q%x
q=>q%next
end do
http://sites.google.com/site/nwnuatom/个人网站,欢迎猛击乱点!
2楼2011-04-19 14:48:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qwer_2009

铜虫 (小有名气)

已经解决了,
是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

除了问题 呵呵 谢谢
4楼2011-04-19 17:02:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见