I’m new to programming, so I want to write a code that will let me input a 2 dimensional array (or a matrix in my case) and print it afterwards.
#include <iostream>
using namespace std;
void printArray( const int *array, int count )
{
for ( int i = 0; i < count; i++ )
cout << array[ i ] << " ";
cout << endl;
}
int main () {
int n;
cout<<"Please enter the length of your matrix : "<<endl;
cin>>n;
int * y=new int [n];
for (int w = 0; w <= n-1; w++ ) {
y[w] = new int [n];
cout<<"Insert the elements ";
for (int z = 0; z <= n-1; z++)
{
cin >>y [w][z];
}
}
printArray(y, n);
}
However I get errors like “invalid conversion from ‘int*’ to ‘int'” and “invalid types int[int] for array subscript”. Can you please review my code and point my flaws?
Thanks
You declared
yas anint*which would only be 1-dimensional. You would need to declareyasint**for it to be 2-dimensional.The reason your code does not compile is because
int* ypoints to a single block of memory (that being an array of integers, in other words, a bunch ofints.).y[w]is one of thoseints inside this array soy[w] = new int[n]fails to compile because you are trying to assign anint*to anint.Changing
yto anint**means thatycan point to an array ofint*s. Since eachint*can point to an array ofint, you will have a 2-dimensional array.Example code for 10×10 matrix with
int**:Example code for 10×10 matrix with
std::vector:I would recommend using
std::vector<std::vector<int>> y;instead since it handles the memory for you by conveniently growing as you want to add more elements and freeing the memory when its destructed.