2016-11-24 4 views
0

私はこれらの乗算をすべてこれらの乗算にするつもりです: 999 * 999,999 * 998、998 * 998、998 * 997、....... .. 100 * 100まで。構文 - C++ - 私のコードが正しく動作するようにする

今のところ999 * 999 998 * 998 997 * 997 ... 100 * 100しか計算されません。 私はなぜそれが得られないのですか?私のコードを見てもらえますか? ありがとうございますが、このようなループのための2つを使用することができます BR

#include <iostream> 
#include <vector> 
#include <cmath> 


int main() { 
    int i = 999; 
    int j = 999; 
    while (j >= 100) { 
     i == j ; 
     while (i >= j-1) { 
      std::cout << i*j << std::endl; 
      i -= j; 
     } 
     j = j-1; 
    } 

    return 0; 
} 
+2

「i == j」が理由です –

+0

私はすでにi = jを試しました。問題は同じままです。計算は999 * 999 998 * 998 997 * 997 .... – nolw38

+1

数字の一握りは結果が何であるかを指定しません。あなたがしたいことをはっきりと簡潔に説明できるようになるまでは、コードを書くことができず、逆に言えば、コードを書くのは簡単です。 –

答えて

2

ループが正しく表示されていません。最初に計算したい数値をテーブルに書き出し、それを使ってループを構築します。あなたの最初のループ変数の一つの値については

- それを呼び出す、あなたはそれがJの1、そして2、そして3(など)、値を掛けたいです。

かかわらずJのそれらの値が実際にあるものの、あなたのループは次のようになります。ここでは

for(int i=999; i>=100; --i) 
    for(int j=999; j>=i; j--) 
      ; //computation goes here 

あなたがはっきりの一つの値のために私、あなたがJの一つの値を使用することがわかりときI = 999Jの2つの値が、その後、THRE ...

あなたがコーディングに慣れていない場合、私はRECOMだろうがで始まり、ループの場合はに、に切り替える場合は、元のものに慣れてください。

0

#include <iostream> 

int main() 
{ 
    for (int i = 999; i > 99; --i) 
    { 
     for (int j = 0; j < 2; ++j) 
     { 
      std::cout << i * (i - j) << std::endl; 
     } 
    } 
} 
+0

良いアイデア!私はそれについて考えなかった!とにかく私がなぜ私のdidntの仕事を理解できれば嬉しいです.-):) – nolw38

0

私はあなたのコードを修正しようとしていたが、内側のwhileループは、実際に削除する必要があります。私がそれを削除した後、私はそれを書き直しているのか修正しているのかはわかりません。とにかく、それは全く削除する必要はありません。

#include <iostream> 
#include <vector> 
#include <cmath> 

int main() { 
    int i = 999; 
    int j = 999; 
    while (j >= 100) { 
    std::cout << i << " " << j << std::endl; 

    if (i==j) 
     --j; 
    else 
     --i; 
    } 

    return 0; 
} 

ロジックは単純で、いつでもi==j、我々--j

はここで右のコードです。 i!=jの場合はいつでも、--iです。 私たちは同じ位置でiとjで始まり、ループの最中にiがjの1歩後ろにいるとき、私は一歩を踏み出します。 iとjが同じ位置にあるとき、jはステップを踏みます。

+0

それは完全に動作します。ありがとう!それも簡単です – nolw38

関連する問題