class matrix
This program is compiled, but it is not wanted to start up. Why?
#include <iostream>
using namespace std;
class matrix2x2{
private:
double M[2][2];
public:
matrix2x2 (const double tab[][2]);
matrix2x2(double,double,double,double);
matrix2x2();
matrix2x2 operator + (matrix2x2);
matrix2x2 operator = (matrix2x2);
matrix2x2 operator - () {
cout <<"operator -" << endl;
M[0][0]=-M[0][0];
M[0][1]=-M[0][1];
M[1][0]=-M[1][0];
M[1][1]=-M[1][1];
return *this;
}
friend ostream& operator << (ostream os, const matrix2x2 X);
double det() {return M[0][0]*M[1][1]-M[1][0]*M[0][1];}
};
matrix2x2::matrix2x2 (const double tab[][2]){
int i,j;
for (i=1;i<2;i++)
for (j=0;j<2;j++)
M[i][j]=tab[i][j];
}
matrix2x2::matrix2x2(double a, double b, double c, double d) {
M[0][0]=a;
M[0][1]=b;
M[1][0]=c;
M[1][1]=d;
}
matrix2x2::matrix2x2(){
M[0][0]=0;
M[0][1]=0;
M[1][0]=0;
M[1][1]=0;
}
matrix2x2 matrix2x2::operator + (matrix2x2 X){
matrix2x2 T;
T.M[0][0]=M[0][0] + X.M[0][0];
T.M[0][1]=M[0][1] + X.M[0][1];
T.M[1][0]=M[1][0] + X.M[1][0];
T.M[1][1]=M[1][1] + X.M[1][1];
return T;
}
matrix2x2 matrix2x2::operator = (matrix2x2 X){
matrix2x2 T;
T.M[0][0]=X.M[0][0];
T.M[0][1]=X.M[0][1];
T.M[1][0]=X.M[1][0];
T.M[1][1]=X.M[1][1];
return T;
}
/*matrix2x2 matrix2x2::operator- (){
matrix2x2 T;
T.M[0][0]=-X.M[0][0];
T.M[0][1]=-X.M[0][1];
T.M[1][0]=-X.M[1][0];
T.M[1][1]=-X.M[1][1];
return T;
}
*/
//int main()
int main(int argc, char **argv)
{
const double tab[][2]= {{1.5, 2.5}, {3.5, 4.5}};
matrix2x2 A(tab), B(1.0, 0.0, 0.0, -1.0), C = A + B, D;
D = -C;
cout << "\nMacierz A: " << A
<< ", macierz B: " << B
<< ", macierz C: " << C
<< ", macierz D: " << D
<< ", wyznacznik macierzy A: " << A.det() //-2.0
<< ", wyznacznik macierzy B: " << B.det() //-1.0
<< ", wyznacznik macierzy C: " << C.det() // 0.0
<< ", wyznacznik macierzy D: " << D.det(); // 0.0
return 0;
}