while循环并不完全尊重C ++的多条件

时间:2016-04-22 11:32:00

标签: c++ while-loop

我想制作一个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循环。我用其他几种编程语言尝试了同样的程序,同样的事情发生了。

2 个答案:

答案 0 :(得分:0)

按升序改变while循环中条件的位置,如(o&lt; 40&amp; p&lt; 42&amp; d&lt; 820)并使用&amp; 820;操作以获得正确的答案,因为在您的代码中答案仅依赖于d。

答案 1 :(得分:0)

谢谢大家。

第一个问题是同时进行比较。我使用OR(||)但我应该使用逻辑和(&amp;&amp;)。这就是为什么我虽然我的循环覆盖条件乘以倍数。

现在唯一的问题是修复,在检查值后减去。