Wednesday, 2 May 2018

c++ - Addition of two matrix using struct



I'm trying to sum two matrix using struct, but it doesn't work.



If this code can be optimized please tell me :D




Compile with:



g++ -O2 -Wall program.cpp -o program


Output:



In file included from /usr/include/c++/4.8/iostream:39:0,
from Proy3.cpp:2:

/usr/include/c++/4.8/ostream:548:5: note: template std::basic_ostream& std::operator<<(std::basic_ostream&, const unsigned char*)
operator<<(basic_ostream& __out, const unsigned char* __s)
^
/usr/include/c++/4.8/ostream:548:5: note: template argument deduction/substitution failed:
Proy3.cpp:51:30: note: ‘std::istream {aka std::basic_istream}’ is not derived from ‘std::basic_ostream’
cin << &M2.x[i][j];



Code:



# include < cstdio >

# include < iostream >


typedef struct Matrix
{
int row, column;
int x[20][20];
};

Matrix M1,M2;



using namespace std;



int main()
{



cout << "Insert size rows: Mat[a]";
cin >> M1.row);


cout << "Insert size of columns Mat[a]";
cin >> M1.column;


cout << "Insert size of rows Mat[b]";
cin >> M2.row;

cout << "Insert size of columns Mat[b]";
cin >> M2.column;


int i, j;

// Matrix x

for(i = 0; i <= M1.row; i++)
{
for(j = 0; j <= M1.column; j++)
{
cout << "Insert number for matrix X : \n";
cin >> M1.x[i][j]

}
}

// Matrix y

for(i = 0; i <= M2.row; i++)
{
for(j = 0; j <= M2.column; j++)
{
cout << "Insert number for matrix Y : \n";

cin << M2.x[i][j];
}
}

// Matrix X + Matrix Y

for(i = 0; i <= M1.row; i++)
{
for(j = 0; j < M1.column; j++)
{

cout <<"The sum of " << M1.x[i][j] << " + " << M2.x[i][j] << " = " << M1.x[i][j] + M2.x[i][j] << endl;
}
}
return 0;


}


Answer



  for(i = 0; i <= M2.M1.row; i++)
{

for(j = 0; j <= M2.M1.column; j++)
{
cout << "Insert number for matrix Y : \n";
cin << &M2.M1.y[i][j];
}
}


There is no element as M2.M1.y which you are trying to access.
Also why are you declaring M1 inside M2.You could have only one structure and have two instances of it.Something like




struct matrix
{
int row,column;
int X[20][20];
};
struct matrix M1,M2;


Now you can input the two matrices.




Also you have to use cin>>a instead of cin>>&a.



Also cin << &M2.x[i][j]; should be



 cin >> M2.x[i][j];
^^^^

No comments:

Post a Comment

casting - Why wasn&#39;t Tobey Maguire in The Amazing Spider-Man? - Movies &amp; TV

In the Spider-Man franchise, Tobey Maguire is an outstanding performer as a Spider-Man and also reprised his role in the sequels Spider-Man...