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

To answer to a comment, the code is not already implemented. The code does not s

ID: 3881837 • Letter: T

Question

To answer to a comment, the code is not already implemented. The code does not solve 3x3 systems. It lacks the "ability" to do row reduced echelon calculations or Gauss Jordan elimination (it's the same thing, here's a link that explains it http://pages.pacificcoast.net/~cazelais/251/gauss-jordan.pdf)

The code that I posted simply provides the basis. You have to write a class that inherits from my class, so it gets the Matrix information that the user puts in, afterward the new class that you write will implement the Gaus Jordan calculation. I hope this clears up the confusion

[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).

If you do don't know how to do this, please, don't answer this question! If anything is unclear just comment, and I will try to clear up the confusion.

Additionally, 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)

This is important so that it has access to the Matrix information. Here's the link to my code:

Essentially, it just needs to get expanded with another class that inherits from the first one to do the row echelon calculation.

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;
}

Explanation / Answer

#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;
}

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