2016-12-13 7 views
-4

私はプロジェクトのコードを出力しようとしていますが、タイトルに記載されているエラーを解決するために他のいくつかの質問を試してみましたが、それをどこにでも持ち込む。できるだけ具体的に、私はコーディングで初心者だとそれだけが存在していないので、あなたがアプリケーションを正常に構築されていないので、これは、いくつかのC++システムファイルを指定することができません

#include <iostream> 
#include <ctime> 
using namespace std; 
int main() 
{ 
    //Initialize Variables for initial Lattice 
    int Size = 0; 
    float Density = 0.0; 


    //Input Desired Lattice Size 
    std::cout << "How large do you want the square lattice to be? "; cin << Size; 

    //Input Desired Density 
    std::cout << "What density would you like to test for Percolation? "; cin << Density; 

    //Construct Matrix 
    float Lattice[Size][Size]; 
    for (int i = 0; i < Size; ++i) 
    { 
     for (int j=0; j<Size; ++j) 
     { 
      Lattice[i][j] = float((int rand() % Size)/(Size)); 
     } 
     std::cout << endl; 
    } 
    std::cout << Lattice[Size][Size]; 
    system("pause"); 
    return 0; 

} 
+1

OK - 2つの文を1行に入れないでください! (これは合法ですが、それは不思議です) 'cin; Size;'が必要なときは 'cin

+0

そして、 'int'と余分なダース'( 'と') '--Lattice [i] [j] = float(rand()%Size)/ Size;'を試してみてください。 –

+0

あなたがそれをしている間に、コンパイラの警告を出してください。可変長配列(VLA)はC++標準ではありません。また、それらを使用しても(btwしないでください)、最後の 'std :: cout'挿入は、配列次元を破ることによって*未定義の動作*を呼び出します。 – WhozCraig

答えて

0

を知ってください。

cin << Size;cin >> Size;であるべきであり、他の入力ラインに同じ:

は、いくつかのコンパイルエラーがあります(実際のエラーメッセージは「システムは指定されたファイルを見つけることができない」です)。
(これはあなたが別の行に書く場合は見つけることは簡単です。)

int rand()はちょうどrand()でなければなりません。

可変長配列は標準のC++ではありません。

また、いくつかの論理エラーがあります。

rand() % SizeSizeより小さいので、(rand() % Size)/Sizeは常にゼロになります。
(これは整数除算です)

代わりにLattice[i][j] = (rand() % Size)/static_cast<float>(Size);を使用してください。

さらに、std::cout << Lattice[Size][Size];が配列全体を印刷すると思われます。
そうはなりません。配列floatにアクセスするために配列の外側にインデックスされ、未定義です。
ループを作成する必要があります。

+0

'rand()'ステートメントは、浮動小数点型であるか、しようとするCスタイルのキャストです!カッコがいくつか削除されていると機能します。 –

関連する問題