Reputation: 193
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
Upvotes: 0
Views: 3328
Reputation: 10903
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.
Upvotes: 1
Reputation: 227578
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
Upvotes: 2