Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

[C++] I need to write a class that is derived from and has a base the class of H

ID: 3879015 • Letter: #

Question

[C++]

I need to write a class that is derived from and has a base the class of HW. 1 to solve 3x3 systems of equations (3 equations with 3 unknowns.). Since it says derived, I am assuming it means inheritance. Here's the link to the code (HW.1):

https://repl.it/KhHC/12

#include

using namespace std;

class Matrix{
  
private :
double A[3][3];
double B[3][3];
double result[3][3];
  
public :
/*-------------------------------------------------------
FUNCTON NAME: input
PARAMETERS:
RETURN TYPE:
DESCRIPTION: Stores user values inside the corresponding arrays to be referenced later
-------------------------------------------------------*/
void input(){

cout << "Input 9 elements into your 3x3 matrix A: ";
  
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
cin >> A[i][j];
// terminates function on failure
if(cin.fail()) {
cin.clear();
cin.ignore(100, ' ');
cerr << " ERROR: Please enter valid input! " << endl;
}
}
}
  
cout << "Input 9 elements into your 3x3 matrix B: ";
  
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
cin >> B[i][j];
// terminates function on failure
if(cin.fail()) {
cin.clear();
cin.ignore(100, ' ');
cerr << " ERROR: Please enter valid input! " << endl;
}
}
}
}
/*-------------------------------------------------------
FUNCTON NAME: print
PARAMETERS: result
RETURN TYPE: will output the results of the array calculation
DESCRIPTION: This function will print out the results from the subtraction and addition function
-------------------------------------------------------*/
void print(double result[3][3]){
for(int i = 0; i < 3; i++) {
cout << "[";
for(int j = 0; j < 3; j++) {
cout << result[i][j] << " ";
}
cout << "]" << endl;
}
}
/*-------------------------------------------------------
FUNCTON NAME: printAB
PARAMETERS:
RETURN TYPE:
DESCRIPTION: This function will simply display the Matrices of A and B right after the user has finished their input
-------------------------------------------------------*/
void printAB(){
cout<<" Matrix A :"< for(int i = 0; i < 3; i++) {
cout << "[";
for(int j = 0; j < 3; j++) {
cout << A[i][j] << " ";
}
cout << "]" << endl;
}

cout<<" Matrix B :"< for(int i = 0; i < 3; i++) {
cout << "[";
for(int j = 0; j < 3; j++) {
cout << A[i][j] << " ";
}
cout << "]" << endl;
}
}
/*-------------------------------------------------------
FUNCTON NAME: addition
PARAMETERS:
RETURN TYPE:
DESCRIPTION: This function will perform the addition and the print function will output the result
-------------------------------------------------------*/
void addition(){
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
result[i][j] = A[i][j] + B[i][j];
}
}
print(result);
}
/*-------------------------------------------------------
FUNCTON NAME: subtraction
PARAMETERS:
RETURN TYPE:
DESCRIPTION: This function will perform the subtraction and the print function will output the result
-------------------------------------------------------*/
void subtraction(){
for(int i = 0; i < 3; i++) {
for(int j = 0; j < 3; j++) {
result[i][j] = A[i][j] - B[i][j];
}
}
print(result);
}
/*-------------------------------------------------------
FUNCTON NAME: determinant
PARAMETERS:
RETURN TYPE: determin, an integer
DESCRIPTION: This function will find the determinant
-------------------------------------------------------*/
int determinant(){
int determin = 0;
//finding the determinant
for(int i = 0; i < 3; i++)
determin = determin + (A[0][i] * (A[1][(i+1)%3] * A[2][(i+2)%3] - A[1][(i+2)%3] * A[2][(i+1)%3]));
return determin;
}
/*-------------------------------------------------------
FUNCTON NAME: inverse
PARAMETERS:
RETURN TYPE:
DESCRIPTION: This function will find the inverse and output the result
-------------------------------------------------------*/
void inverse(){
cout <<" Inverse of Matrix A is: ";
cout << " " << endl;
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++)
cout<< "[" << ((A[(j+1)%3][(i+1)%3] * A[(j+2)%3][(i+2)%3]) - (A[(j+1)%3][(i+2)%3] * A[(j+2)%3][(i+1)%3]))/ determinant()<< "]" << " ";
cout<<" ";
}
}
};
//Main function
int main() {
//Initializing Variables; "choice" will initiate a a loop, "input" will come in useful to do a switch statement, and obj will simply create another instance of the original class that can be manipulated
bool choice;
char input;
Matrix obj;

cout << " When filling up matrices, separate individual elements by a space (e.g 2 4 1.4 56.3 ...) ";

obj.input();
obj.printAB();
  
//Displaying a menu, so that the user can choose what he wants to do
choice = false;
//The Loop
while(!choice) {
cout << " " << endl;
cout <<"** Choose from the following **"<< endl;
cout << " " << endl;
cout << "a - Addition" << endl;
cout << "s - Subtraction" << endl;
cout << "d - Determinant" << endl;
cout << "i - Inverse" << endl;
cout << "q - Quit" << endl;
cout << " " << endl;
cout << "Note: Choosing 'i' or 'd' will only apply to Matrix A" << endl;
cout << " " << endl;
cout << "Enter your choice: ";
cin >> input;
cout << endl;
//A switch to handle the user inputs
switch(input){
  
case 'a': case 'A': obj.addition();
break;
  
case 's': case 'S': obj.subtraction();
break;
  
case 'd'|'D': cout<<"Determinant is : "< cout << " " << endl;
break;
  
case 'i': case 'I': obj.inverse();
break;
  
case 'q': case 'Q': exit(0);
  
default:cout<<" ERROR: Please enter valid input! ";
}

}

return 0;
}

alternatively,

Explanation / Answer

#include <iostream>
    using namespace std;
    class Matrix
    {
        double A[3][3];
       double B[3][3];
       double result[3][3];
        public :
          
           // Create a method for input matrix print matrix, add,subtract, determinant and inverse
           // here in class we created a funtion and implement in class
            void input();      
            void print(double[3][3]);
            void printAB();
            void addition();
            void subtraction();
          
            // You can also call the fuction like that if you want
           int determinant(){
                double determin = 0;
                 //finding the determinant
               for(int i = 0; i < 3; i++)
               determin = determin + (A[0][i] * (A[1][(i+1)%3] * A[2][(i+2)%3] - A[1][(i+2)%3] * A[2][(i+1)%3]));
                return determin;
           }
          
           void inverse()
            {
                cout <<" Inverse of Matrix A is: ";
                 cout << " " << endl;
               for(int i = 0; i < 3; i++){
                   for(int j = 0; j < 3; j++)
                    cout<< "[" << ((A[(j+1)%3][(i+1)%3] * A[(j+2)%3][(i+2)%3]) - (A[(j+1)%3][(i+2)%3] * A[(j+2)%3][(i+1)%3]))/ determinant()<< "]" << " ";
                   cout<<" ";
                  }
           }         
    };
    void Matrix::input()
    {
        cout << "Input 9 elements into your 3x3 matrix A: "<< endl;

        for(int i = 0; i < 3; i++) {
          for(int j = 0; j < 3; j++) {
            cin >> A[i][j];
            // terminates function on failure
              if(cin.fail()) {
                cin.clear();
                cin.ignore(100, ' ');
                cerr << " ERROR: Please enter valid input! " << endl;
              }
          }
        }

      cout << "Input 9 elements into your 3x3 matrix B: ";

        for(int i = 0; i < 3; i++) {
          for(int j = 0; j < 3; j++) {
            cin >> B[i][j];
            // terminates function on failure
              if(cin.fail()) {
                cin.clear();
                cin.ignore(100, ' ');
                cerr << " ERROR: Please enter valid input! " << endl;
              }
          }
        }
    }
    void Matrix::print(double result[3][3])
    {
        for(int i = 0; i < 3; i++)
       {
        cout << "[ ";
          for(int j = 0; j < 3; j++) {
            cout << result[i][j] << " ";
          }
              cout << "]" << endl;
         }

    }
    void Matrix::printAB()
    {
       cout<<" Matrix A :"<<endl;
        for(int i = 0; i < 3; i++) {
          cout << "[";
            for(int j = 0; j < 3; j++) {
              cout << A[i][j] << " ";
            }
                cout << "]" << endl;
        }

      cout<<" Matrix B :"<<endl;
        for(int i = 0; i < 3; i++) {
          cout << "[";
            for(int j = 0; j < 3; j++) {
              cout << A[i][j] << " ";
            }
                cout << "]" << endl;
        }
   }

      
    void Matrix::addition()
   {
      for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 3; j++) {
          result[i][j] = A[i][j] + B[i][j];
        }
      }
            print(result);
   }
  
   void Matrix::subtraction()
   {
       for(int i = 0; i < 3; i++) {
        for(int j = 0; j < 3; j++) {
          result[i][j] = A[i][j] - B[i][j];
        }
      }
            print(result);
   }
  
  
      
    int main()
   {
       //Initializing Variables; "choice" will initiate a a loop, "input" will come in useful to do a switch statement, and obj will simply create another instance of the original class that can be manipulated
          bool choice;
          char input;
          Matrix obj;
      
       cout << " When filling up matrices, separate individual elements by a space (e.g 2 4 1.4 56.3 ...) ";
      
          obj.input();
          obj.printAB();
      
       //Displaying a menu, so that the user can choose what he wants to do
       choice = false;
       //The Loop
       while(!choice) {
          cout << " " << endl;
          cout <<"** Choose from the following **"<< endl;
          cout << " " << endl;
          cout << "a - Addition" << endl;
          cout << "s - Subtraction" << endl;
          cout << "d - Determinant" << endl;
          cout << "i - Inverse" << endl;
          cout << "q - Quit" << endl;
          cout << " " << endl;
          cout << "Note: Choosing 'i' or 'd' will only apply to Matrix A" << endl;
          cout << " " << endl;
          cout << "Enter your choice: ";
          cin >> input;
          cout << endl;
       //A switch to handle the user inputs
            switch(input){
      
              case 'a': case 'A': obj.addition();
                break;
      
              case 's': case 'S': obj.subtraction();
                break;
      
              case 'd'|'D': cout<<"Determinant is : "<<obj.determinant();
                cout << " " << endl;
                  break;
          
            case 'i': case 'I': obj.inverse();
               break;
          
              case 'q': case 'Q': exit(0);
      
              default:cout<<" ERROR: Please enter valid input! ";
            }
      
       }
      
       return 0;
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote