# Converting 2D array to 1D

Sometimes in life, you may wanna convert a matrix into a one dimensional array for the sake of the simplicity or maybe some other causes.

``````#include <iostream>
using namespace std;
void convert(int** A, int* V, int n, int m) {    //The usage of * is to remove the need of providing the size of the array, which makes it
// more dynamic
// A is the original 2D array, V the new array, n the rows and m the columns

int k = 0;       //k is the counter of elements, used as an index to store all the elements of A in V.

for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
V[k] = A[i][j];
k++;
}
}

}

void main() {

int n, m;

do {
cout << "Enter n: ";
cin >> n;
} while (n <= 0);   //To avoid using a negative number as number of rows

do {
cout << "Enter m: ";
cin >> m;
} while (m <= 0);   //To avoid using a negative number as number of columns

int** A = new int* [n]; //Dynamically allocate n rows

for (int i = 0; i < n; i++)
A[i] = new int[m];  //To dynamically allocate m columns

for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cout << " \n Enter the element: [" << i << "][" << j << "] ";
cin >> A[i][j];
}
}

int* V = new int[n * m];  //n*m because there are n*m elements in the matrix A

convert(A, V, n, m);

cout << " \n The array V now contains: \n";
for (int i = 0; i < n * m; i++)
cout << V[i] << " " ;

}``````

100 points
3