0
int main ()
{
  int line,column,i,j;
  int sortir = 1;
  float nbr;

  cout << "The number of column :";
  cin >> column;
  cout << "The number of lines: ";
  cin >> line;
  float matrice [column][line];   //creating my 2d array

  for(i=0;i <= line;i++) //asking the user to put the numbers he wants in the 2d array
    for(j=0;j <= column;j++){
      cout << "Enter a number";
      cin >> nbr;
      matrice[j][i] = nbr;
    }
  system("PAUSE");
  return 0;
}

(メモリゾーン) [0,0] [0,1] [1,0] [1,1] を作成する行 = 1 および列 = 1 の配列を作成するとします。ユーザーが次の数字を入力するとします。

[0,0]=1

[0,1]=2

[1,0]=3

[1,1]=4

プログラムの最後に入力した内容をユーザーに表示したい場合: ゾーン [0][1] と [1][0] は同じ数字を示していますか?

cout << matrice[0][0] = 1

cout << matrice[0][1] = 3 <-- why the f***

cout << matrice[1][0] = 3 <--His my for loop good?

cout << matrice[1][1] = 4
4

2 に答える 2

2

範囲外の配列にアクセスしています。ループする要素が多すぎます。あなたが必要

for(i=0;i < line;i++) {
  for(j=0;j < column;j++){

それに加えて、コードは標準に準拠した C++ ではなく、可変長配列(VLA)と呼ばれる拡張機能に依存しています。実行時にサイズが決定される自動ストレージ配列を宣言することはできません。

int i;
std::cin >> i;
int a[i];   // ERROR (non-standard VLA extension)
const int j = 42;
int b[j];   // OK
int c[42];  // OK
于 2013-09-14T22:48:07.573 に答える
1

これは有効な構文ではありません。 float matrice[column][line]違法です。C++ では可変サイズの配列を使用できません。あなたのコンパイラは拡張機能などを提供しています。

于 2013-09-14T22:48:54.057 に答える