[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;
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.