# C++ (matrix sum)

# C++ matrix sum myself

```cpp
#include<iostream>
#include<vector>

using namespace std;
//declare matrix_sum function
vector< vector<int> > matrix_sum(vector< vector<int> > m1, vector< vector<int> > m2);

int main() {
  //define practical m1,m2
  //m3 for get the returned matrix from the function
  vector< vector<int> > m1(5, vector<int> (3,3));
  vector< vector<int> > m2(5, vector<int> (3,4));
  vector< vector<int> > m3;
  
  m3 = matrix_sum(m1,m2);
  //print out the value from m3
  for (int row = 0; row < m3.size(); row++) {
    for(int col = 0; col < m3[0].size(); col++) {
      
      cout<<m3[row][col]<<" ";
    }
    
    cout<<endl;
  }
  
  return 0;
  
}

//function define
vector< vector<int> > matrix_sum(vector< vector<int> > m1, vector< vector<int> > m2) {
  //define the sum matrix with the same size with m1
  vector< vector<int> > m3(m1.size(), vector<int> (m1[0].size(), 0));
  //m3 get the sum value 
  for (int i = 0; i < m1.size(); i++) {
    for(int j = 0; j < m1[0].size(); j++) {
      m3[i][j] = m1[i][j] + m2[i][j];
    }
  }
  
  return m3;
  
}
```

# C++ Udacity version:

```cpp
#include <iostream>
#include <vector>

using namespace std;

vector < vector <int> > matrixsum(vector < vector <int> > matrix1, vector < vector <int> > matrix2);
// void means valueless, when you define function but not return value, you can use void.
void matrixprint(vector < vector <int> > inputmatrix);

int main() {

	// declare two matrices
	vector < vector <int> > matrix1 (5, vector <int> (3, 2));
	vector < vector <int> > matrix2 (5, vector <int> (3, 26));

	//declare an empty matrix to hold the result
	vector < vector <int> > matrixresult; 

	//calculate the sum of the two matrices
	matrixresult = matrixsum(matrix1, matrix2);

	// call the matrix print function to print out the results
	matrixprint(matrixresult);

	return 0;
}

//function to add two matrices together
vector < vector <int> > matrixsum(vector < vector <int> > matrix1, vector < vector <int> > matrix2) {

	// declare a matrix with the same size as matrix1 and matrix2
	vector < vector <int> > matrixsumresult (matrix1.size(), vector <int> (matrix1[0].size(), 0));

	// iterate through matrix1 and assign the sum of each element to the results matrix
	for (int row = 0; row < matrix1.size(); row++) {
		for (int column = 0; column < matrix1[0].size(); column++) {
			matrixsumresult[row][column] = matrix1[row][column] + matrix2[row][column];
		}

	}

	return matrixsumresult;


}

// function to print an integer matrix
void matrixprint(vector < vector <int> > inputmatrix) {

	for (int row = 0; row < inputmatrix.size(); row++) {
		for (int column = 0; column < inputmatrix[0].size(); column++) {
			cout << inputmatrix[row][column] << " ";
		}
		cout << endl;

	}
}
```
