简体   繁体   中英

c++ 2 dimensional array

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;
}

Lets say I do an array of line = 1 and column = 1 which makes (memory zones) [0,0] [0,1] [1,0] [1,1]. Let's say the user inputs these following numbers:

[0,0]=1

[0,1]=2

[1,0]=3

[1,1]=4

When I want to show the user what he inputted at the end of the program: the zone [0][1] and [1][0] show the same number?

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

You are accessing your array out of bounds. You loop over too many elements. You need

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

Besides that, your code is not standards compliant C++, and is relying on an extension called variable length arrays (VLA). You cannot declare an automatic storage array with a size determined at runtime.

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

That is not valid syntax. float matrice[column][line] is illegal. You cannot have variable sized arrays in C++. Your compiler is providing such as an extension.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM