2012-03-31 5 views
1

私は、ユーザに2つの数値としきい値を求めるプログラムを書いています。プログラムは、両方の数値のすべての倍数を特定のしきい値以下にする必要があります。私は毎回数値を実行し、倍数のいずれかが入力された他の数の倍数でもあるかどうかをチェックするforループを作成しました。そうであれば、それを印刷します。しかし、不思議なことに、私がこのプログラムを実行すると、何も印刷されません!それはかなりイライラです!これは宿題のように思えるのでC++ - 倍数を見つけて共通のものを取り除く

#include <iostream> 
using namespace std; 

int main() 
{ 
    int mult1, mult2, threshold; 
    cout << "Enter first multiple: "; 
    cin >> mult1; 
    cout << "Enter second multiple: "; 
    cin >> mult2; 
    cout << "Enter the threshold: "; 
    cin >> threshold; 
    for (int i = 1; i < threshold; i++) 
    { 
     int check1 = mult1*i; 
     int check2 = mult2*i; 
     if (check1/check2 == 1) 
      cout << check1 << endl; 
    } 
    char response; 
    cin >> response; 
    return 0; 
} 
+2

投票に参加してください:検査であなたのコードのエラーを見つけ出すことは、生産的ではありません。デバッガやprintステートメントを使用して問題を特定(または少なくとも分離)してから、さらに具体的な質問に戻ってください。 –

+0

論理が正しくないようです。 2つの異なる数の積が同じ数を掛け合わせると、どのように同じ結果が得られますか?例:5 * 1、7 * 1は同じ結果をもたらしますか? – Mahesh

+0

Mahesh氏によると、そのコードは正しくないようです。 'i 'が両方の数の倍数であるかどうかを知るために、' if(i%mult1 == 0 && i%mult2 == 0) 'を使用しないでください。 – XaitormanX

答えて

1

は、私はあなたに完全な答えを与えることはありませんが、ちょうどヒント:

if (check1/check2 == 1)check1がすべてであなたが望むものではありませんこれはどこか[check2, 2*check2)であることを意味します。 %オペレーターをご覧ください。あなたが少ないthreshold以上の値を印刷したい場合は

また、その後、check1ithreshold/mult1まで行くべき意味未満thresholdをする必要があります。

+0

'check1 = 3; check2 = 2; ' –

+0

整数除算について聞いたことがありますか? 'check1/check2 == 1'は' check1> = check2 && check1 <2 * check2'を意味します。 – ipc

+0

@ipc、申し訳ありませんが、私は彼が望むものではなく、そのタイプを忘れていたことを彼に伝えることを意味しました。 – Shahbaz

2

表示する各行の後にendlを追加します。
デフォルトでは、coutにキャッシュがあり、すぐには表示されません。
endl出力をフラッシュして改行を追加します。

cout << "Enter first multiple: " << endl; 
+3

実際には、 'cin'はあまり知られていない特徴があります:' cin'を読み込むと自動的に 'cout'がフラッシュされます。これは完全に真実ではありません。 – Potatoswatter

+0

あなたは実際に 'oos'を' ios'に '結びつけることができます:[ios :: tie](http://www.cplusplus.com/reference/iostream/ios/tie/) – Shahbaz

+0

@Potatoswatter:とにかくすべてプログラムが停止する前にバッファが空になります。ほとんどの場合、 'endl'は無用です。 –

2

残念ながら、この質問では問題を十分に特定できません。

プログラムは、両方の数値のすべての倍数が特定のしきい値以下であることがわかります。

あなたは入力番号のいずれかまたは両方入力数の倍数であるすべての数字を見つけたいですか? 両方がの場合、結果は単に入力のleast common multipleの倍数になります。

役に立つヒント:C++には% operatorがあり、1つの数値が複数の数値であるかどうかを知ることができます。

if (a % b == 0) { 
    // a is a multiple of b 
} 
関連する問題