循环并替换C中循环语句中变量的值?
我正在编写一个程序,用户在其中输入一些值,并根据这些值,程序继续执行以下算法:循环并替换C中循环语句中变量的值?,c,function,loops,C,Function,Loops,我正在编写一个程序,用户在其中输入一些值,并根据这些值,程序继续执行以下算法: 1. Set INITIAL cd=0.34 2. CALCULATE Vt using cd=0.34 3. CALCULATE Re using Vt. 4. CALCULATE new_cd using Re and Vt 5. USING new_cd, REPEAT 2 TO 4 until new_cd=cd 6. IF new_cd=cd THEN: FOR(i=0;i<
1. Set INITIAL cd=0.34
2. CALCULATE Vt using cd=0.34
3. CALCULATE Re using Vt.
4. CALCULATE new_cd using Re and Vt
5. USING new_cd, REPEAT 2 TO 4 until new_cd=cd
6. IF new_cd=cd THEN:
FOR(i=0;i<=5;i++): //Proceeds for 5 times with value of D
CALCULATE D
FOR(t=1;t<=4;t++):
Calculate H;
Calculate L;
CALCULATE L/D;
7. WITH D=D+2 REPEAT Step 6.
1。设置初始cd=0.34
2.使用cd=0.34计算Vt
3.用Vt计算Re。
4.使用Re和Vt计算新的_cd
5.使用新的\u cd,重复2到4次,直到新的\u cd=cd
6.如果new_cd=cd,则:
对于(i=0;i,您可能由于无限递归而遇到堆栈溢出。
请重构函数计算新cd
,如下所示:
- 摆脱递归函数调用;它是完全无用的,也是导致问题的主要原因
- 下定决心:使用全局变量(ugh)或pass
cd
作为参数(注意temp
如何被第一条语句覆盖)
这
if (rounded_cd1 == temp)
这是至关重要的
比较浮点数是否相等是一个坏主意,正如
特别是float
仅提供7的精度。最好选择double
与其做f==g
不如做(epsilon>fabs(f-g))
用epsilon
反射您需要的精度,代码能够达到(见上文1),比如const double epsilon=0.00001;
代码不完整。需要添加完整的代码!如果@MFISHERKDX有帮助,则需要将代码重构为单独的函数。目前,这是一个问题。您可能希望阅读以下内容:请不要进行使当前答案无效的编辑。
if (rounded_cd1 == temp)