2017-03-07 6 views
-1

現在のプロジェクトでは、do-whileループと別の値生成関数を使用してプログラムを呼び出しています。入力された最後の2つの数字の差が12を超えるまで、プログラムは不確定な量の入力を求めます。コードは明らかにそのように感じるときにのみ機能します。ときには、ブールが即座に満たされて終了したことを認識することもありますが、最初の場所で終了する場合でも、終了するまで15回以上の数字を入力できます。可能であれば、現在のコードと同じようにコードを保持したいと思います。私は前提条件が必要であることを知っています。なぜなら、最初の入力は何も比較されていないので、私は現時点でそれを理解しようとしています。C++なぜブール条件が満たされるとすぐにdo-whileループが終了しないのですか?

これは、これまでの私のコードです:

bool TwelveApart(int x, int y); 

int main() 
{ 
    int num1, num2; 
    cout << "Enter some integers: " << endl; 

    do 
    { 
     cin >> num1 >> num2; 
     TwelveApart(num1, num2); 
    } while (TwelveApart(num1, num2) == false); 
    cout << "The difference between " << num1 << " and " << num2 << " is greater than or equal to 12." << endl; 

    return 0; 
} 
bool TwelveApart(int x, int y) 
{ 
    if (abs(x - y >= 12)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 
+0

xから 'y> = 12'を引いています。はい、あなたはその権利を読んで、私はそれがあなたに意味をなさないと確信しています....まあ、それはポイントです。 ;)しかし、私は今あなたの問題を解決するのに十分な情報があると確信しています。 –

+0

私はそれを逃したとは思わない。 – JigglyBlubber

答えて

5

if (abs(x - y >= 12)) 

の条件が設定右ではありません。それはする必要があります:

if (abs(x - y) >= 12) 

FWIW、あなたに機能を簡素化することができます。また

bool TwelveApart(int x, int y) 
{ 
    return (abs(x - y) >= 12); 
} 

、あなたがdo-whileループ内TwelveApartへの冗長電話を持っています。その呼び出しは役に立たない何もしません。ループは次のようになります。

do 
{ 
    cin >> num1 >> num2; 
} while (TwelveApart(num1, num2) == false); 
+0

ありがとうございます。それはまだ完全には完璧ではない、私は条件が満たされているにもかかわらず、もう一つの番号を入力する必要がありますが、それは働いていると私は今正しい道にある。 – JigglyBlubber

+0

@JigglyBlubber、それは正しく聞こえません。 'do {..} while();'ステートメントが満たされた後、これ以上の数値を入力する必要はありません。 –

関連する問題