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 solves 3x3 systems of equations (3 equations w

ID: 3881749 • Letter: #

Question

[C++]I need to write a class that solves 3x3 systems of equations (3 equations with 3 unknowns). (This is about Matrices reduced to row echelon form).

The class should be derived from and has a base of the class of HW.1 (So the class that is going to be written inherits from the class that I wrote in my first home work)

Please if anything is unclear, write a comment and I will answer it.

Here's the link to my code: https://repl.it/KhHC/12

#include <iostream>
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 :"<<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;
}
}
/*-------------------------------------------------------
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 : "<<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;
}

Explanation / Answer

C++

hi as shown in below program:

#include <iostream>
using namespace std;

class Matrix{
  
private :
double A[3][3];
double B[3][3];
double result[3][3];

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