c++ 행렬

언어/c++2016. 5. 21. 21:08

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <iomanip>

#define _ROW_ 2
#define _COL_ 2
#define MAT int

using namespace std;
class MATRIX {
public:
 MAT A_rray[_ROW_][_COL_];
 MAT B_rray[_ROW_][_COL_];
 MAT A_plus_B[_ROW_][_COL_];
 MAT A_sub_B[_ROW_][_COL_];
 MAT A_mul_B[_ROW_][_COL_];
public:
 MATRIX();
 void dataInput();
 void addition();
 void subtraction();
 void multiplication();
};

int main(void) {
 MATRIX* M = NULL;
 M = new MATRIX;
 M->dataInput();
 M->addition();
 M->subtraction();
 M->multiplication();
 return 0;
}
MATRIX::MATRIX() {

 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   this->A_rray[i][j] = 0;
   this->B_rray[i][j] = 0;
   this->A_plus_B[i][j] = 0; // _'+'_
   this->A_sub_B[i][j] = 0; // _'-'_
   this->A_mul_B[i][j] = 0; // _'X'_
  }
 }
 cout << " ================================================== " << endl;
 // [ A_RRAY ] test printf
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " A_rray[" << i << "]" << "[" << j << "] = "
    << setw(2) << this->A_rray[i][j] << "   ";
  }
  cout << endl;
 }
 cout << endl;
 // [ B_RRAY ] test printf
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " B_rray[" << i << "]" << "[" << j << "] = "
    << setw(2) << this->B_rray[i][j] << "   ";
  }
  cout << endl;
 }
 cout << endl;
 // [ A+B_RRAY ] test printf
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " A_plus_B[" << i << "]" << "[" << j << "] = "
    << setw(2) << this->A_plus_B[i][j] << "   ";
  }
  cout << endl;
 }
 cout << endl;
 // [ A-B_RRAY ] test printf
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " A_sub_B[" << i << "]" << "[" << j << "] = "
    << setw(2) << this->A_sub_B[i][j] << "   ";
  }
  cout << endl;
 }
 cout << endl;
 // [ AXB_RRAY ] test printf
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " A_mul_B[" << i << "]" << "[" << j << "] = "
    << setw(2) << this->A_mul_B[i][j] << "   ";
  }
  cout << endl;
 }
 cout << " ================================================== " << endl;
} // END OF MATRIX()

void MATRIX::dataInput() {

 // [ A_RRAY ] DATA SETTING
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " A_rray[" << i << "]" << "[" << j << "] = ";
   cin >> this->A_rray[i][j];
  }
 }
 // [ A_RRAY ] test printf
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " A_rray[" << i << "]" << "[" << j << "] = "
    << this->A_rray[i][j] << "   ";
  }
  cout << endl;
 }
 cout << endl;

 // [ B_RRAY ] DATA SETTING
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " B_rray[" << i << "]" << "[" << j << "] = ";
   cin >> this->B_rray[i][j];
  }
 }
 // [ B_RRAY ] test printf
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " B_rray[" << i << "]" << "[" << j << "] = "
    << this->B_rray[i][j] << "   ";
  }
  cout << endl;
 }
}// END OF dataInput()

void MATRIX::addition() {
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   this->A_plus_B[i][j] = this->A_rray[i][j] + this->B_rray[i][j];
  }
 }
 cout << " ==================[ Addition ]==================== " << endl;
 // [ A+B_RRAY ] test printf
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " A_plus_B[" << i << "]" << "[" << j << "] = "
    << setw(2) << this->A_plus_B[i][j] << "   ";
  }
  cout << endl;
 }
 cout << " ================================================== " << endl;
}
void MATRIX::subtraction() {
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   this->A_plus_B[i][j] = this->A_rray[i][j] - this->B_rray[i][j];
  }
 }
 cout << " ================[ Subtraction ]================== " << endl;
 // [ A+B_RRAY ] test printf
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " A_sub_B[" << i << "]" << "[" << j << "] = "
    << setw(2) << this->A_sub_B[i][j] << "   ";
  }
  cout << endl;
 }
 cout << " ================================================== " << endl;
}
void MATRIX::multiplication() {
 int sum = 0;
 for (int k = 0; k < 2; k++){
  for (int i = 0; i < _ROW_; i++) {
   for (int j = 0; j < _COL_; j++) {
    sum += this->A_rray[k][j] * this->B_rray[j][i];
   }
   this->A_mul_B[k][i] = sum;
   sum = 0;
  }
 }
 cout << " ===============[ Multiplication ================= " << endl;
 // [ A+B_RRAY ] test printf
 for (int i = 0; i < _ROW_; i++) {
  for (int j = 0; j < _COL_; j++) {
   cout << " A_sub_B[" << i << "]" << "[" << j << "] = "
    << setw(2) << this->A_mul_B[i][j] << "   ";
  }
  cout << endl;
 }
 cout << " ================================================== " << endl;
}

'언어 > c++' 카테고리의 다른 글

c++ 문자열 파싱, substr  (0) 2017.07.02
c++ 동적할당  (0) 2017.07.01
각 자리 숫자 더하기  (0) 2016.03.23
stu1  (0) 2016.02.25
변형 시저  (0) 2016.02.08