我想制作一个C ++程序,用很少的信息计算多个结果。但这甚至不重要。因为我对while循环有问题。
这是我的代码:
#include <iostream>
using namespace std;
int main(){
float c=0.08734,s,t,p,d,g,o,k;
int z,i;
d=0;
p=0;
o=0;
cout << "z?" << endl;
cin >> z;
cout << "s?" << endl;
cin >> s;
cout << "o?" << endl;
cin >> o;
g=1*10/(z*s*c);
cout << g << endl << endl;
k=o;
while (d < 810 || p < 42 || o < 40)
{
cout << o << endl;
d=(s*z*o)/c;
p=(d*c)/(z*s)+2.5;
o=o+k;
cout << d << o << p << endl << endl;
//if ( d>=810 || p >= 42 || o >= 39.5) break;
}
cout << d << o << p << endl << endl;
return 0;
}
我放了一些额外的couts因为我试图调试并修复它。但我不能。 令人兴奋的问题是因为虽然循环停止,但它应该几次。所以它覆盖了我所做的条件虽然(...)我也尝试过ANDs但同样的事情发生了。 我也试过把IF放在里面,但这没有用。
示例输入: z 2 s 0.852 o 6
输出应该是: 585.299 36 32.5
节目打印: 819.418 48 44.5
注意:我对使这个程序完全正常工作并不感兴趣。我想知道我在哪里弄错了while循环。我用其他几种编程语言尝试了同样的程序,同样的事情发生了。
答案 0 :(得分:0)
按升序改变while循环中条件的位置,如(o&lt; 40&amp; p&lt; 42&amp; d&lt; 820)并使用&amp; 820;操作以获得正确的答案,因为在您的代码中答案仅依赖于d。
答案 1 :(得分:0)
谢谢大家。
第一个问题是同时进行比较。我使用OR(||)但我应该使用逻辑和(&amp;&amp;)。这就是为什么我虽然我的循环覆盖条件乘以倍数。
现在唯一的问题是修复,在检查值后减去。