# C++ program to Convert a Matrix to Sparse Matrix

Given a matrix with most of its elements as 0, convert this matrix to sparse matrix in C++

Examples:

```Input: Matrix:
0 1 0 0
0 0 2 0
0 3 0 0
0 0 5 0
0 0 0 4
Output: Sparse Matrix:
0 1 1
1 2 2
2 1 3
3 2 5
4 3 4
Explanation:
Here the Sparse matrix is represented
in the form Row Column Value

Hence the row 0 1 1 means that the value
of the matrix at row 0 and column 1 is 1
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:

1. Get the matrix with most of its elements as 0.
2. Create a new 2D array to store the Sparse Matrix of only 3 columns (Row, Column, Value).
3. Iterate through the Matrix, and check if an element is non zero. In this case insert this element into the Sparse Matrix.
4. After each insertion, increment the value of variable length(here ‘len’). This will serve as the row dimension of the Sparse Matrix
5. Print the Dimension of the Sparse Matrix and its elements.

 `// C++ program to convert a Matrix ` `// into Sparse Matrix ` ` `  `#include ` `using` `namespace` `std; ` ` `  `// Maximum number of elements in matrix ` `#define MAX 100 ` ` `  `// Array representation ` `// of sparse matrix ` `//[][0] represents row ` `//[][1] represents col ` `//[][2] represents value ` `int` `data[MAX][3]; ` ` `  `// total number of elements in matrix ` `int` `len; ` ` `  `// insert elements into sparse matrix ` `void` `insert(``int` `r, ``int` `c, ``int` `val) ` `{ ` `    ``// insert row value ` `    ``data[len][0] = r; ` ` `  `    ``// insert col value ` `    ``data[len][1] = c; ` ` `  `    ``// insert element's value ` `    ``data[len][2] = val; ` ` `  `    ``// increment number of data in matrix ` `    ``len++; ` `} ` ` `  `// printing Sparse Matrix ` `void` `print() ` `{ ` `    ``cout << ``"\nDimension of Sparse Matrix: "` `         ``<< len << ``" x "` `<< 3; ` `    ``cout << ``"\nSparse Matrix: \nRow Column Value\n"``; ` ` `  `    ``for` `(``int` `i = 0; i < len; i++) { ` ` `  `        ``cout << data[i][0] << ``" "` `             ``<< data[i][1] << ``" "` `             ``<< data[i][2] << ``"\n"``; ` `    ``} ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `i, j; ` `    ``int` `r = 5, c = 4; ` ` `  `    ``// Get the matrix ` `    ``int` `a[r] = { { 0, 1, 0, 0 }, ` `                    ``{ 0, 0, 2, 0 }, ` `                    ``{ 0, 3, 0, 0 }, ` `                    ``{ 0, 0, 5, 0 }, ` `                    ``{ 0, 0, 0, 4 } }; ` ` `  `    ``// print the matrix ` `    ``cout << ``"\nMatrix:\n"``; ` `    ``for` `(i = 0; i < r; i++) { ` `        ``for` `(j = 0; j < c; j++) { ` `            ``cout << a[i][j] << ``" "``; ` `        ``} ` `        ``cout << endl; ` `    ``} ` ` `  `    ``// iterate through the matrix and ` `    ``// insert every non zero elements ` `    ``// in the Sparse Matrix ` `    ``for` `(i = 0; i < r; i++) ` `        ``for` `(j = 0; j < c; j++) ` `            ``if` `(a[i][j] > 0) ` `                ``insert(i, j, a[i][j]); ` ` `  `    ``// Print the Sparse Matrix ` `    ``print(); ` ` `  `    ``return` `0; ` `} `

Output:

```Matrix:
0 1 0 0
0 0 2 0
0 3 0 0
0 0 5 0
0 0 0 4

Dimension of Sparse Matrix: 5 x 3
Sparse Matrix:
Row Column Value
0 1 1
1 2 2
2 1 3
3 2 5
4 3 4
```

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.

Article Tags :
Practice Tags :

2

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.