Fortran Coder

查看: 128|回复: 3

[流程控制] 能读入但是无法代入循环

[复制链接]

2

帖子

1

主题

0

精华

新人

F 币
15 元
贡献
7 点
发表于 2021-12-27 10:08:21 | 显示全部楼层 |阅读模式
本帖最后由 richard7 于 2021-12-27 10:10 编辑

兄弟们帮帮忙,、
代码是大循环套个小循环
大循环从文件中读入r
代入小循环迭代
但是r能正常的输出
小循环中的参数输出时都变成了第一个r的数据了
想求助一下是为什么
需要使用数组吗文件里就是简单的3个数字
[Fortran] 纯文本查看 复制代码
program main1
 implicit  none
 real (kind=4) :: r,s,x,u,v,q,k,p
 integer , parameter :: l=5 
 integer :: t
 integer :: status=0
 x=0
 t=0
 write(*,*) "压差p(MPa)"
 read(*,*) p
 open(unit=10,file="test.txt")
 do while(.true.)
   read(10,"(F9.3)",iostat=status)r
   write(*,*)"r=", r
   s=3.14*(r*0.0001/2)**2
   write(*,"(' s=',2X,F15.13)") s
   do while (x<=l)
     u=(5*(l-x)**2+0.75*x**2)/((l-x)**2+x**2)
     v=((r*0.000001/2))**2*p*1000000/(8*u*0.001*0.05*100)
     q=v*s
     x=x+v
     t=t+1
   end do
 write(*,*) "t=",t
 write(*,*) "x=",x
 write(*,*) "u=",u
 write(*,"(' v=',2X,F10.8)") v
 write(*,"(' q=',2X,F15.13)") q
 if(status/=0) exit
 end do
 STOP
end

回复

使用道具 举报

1699

帖子

13

主题

5

精华

论坛跑堂

臭石头雪球

F 币
2330 元
贡献
1457 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2021-12-27 11:55:17 | 显示全部楼层
x=0
t=0
移动到第一层循环内,第二层循环开始前

题外话: do while(.true.) 可以简写为  do

2

帖子

1

主题

0

精华

新人

F 币
15 元
贡献
7 点
 楼主| 发表于 2021-12-27 16:14:11 | 显示全部楼层
fcode 发表于 2021-12-27 11:55
x=0
t=0
移动到第一层循环内,第二层循环开始前

谢谢你,问题已经解决了
do while(.true.)的写法是我在书上看的,当时只知道用法不知道具体含义,刚刚翻书才看到是不需要判定进行循环,但是do循环不是都会有个计数器吗,直接写do可以吗?

1699

帖子

13

主题

5

精华

论坛跑堂

臭石头雪球

F 币
2330 元
贡献
1457 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

发表于 2021-12-28 08:15:47 | 显示全部楼层
可以的。他俩完全等效,都是“无条件一直循环”
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2022-1-19 16:17

Powered by Tencent X3.4

© 2013-2022 Tencent

快速回复 返回顶部 返回列表