I have to make a quadratic equation calculator out of classes and use structures with arrays. I'll post the code I have below and the errors I'm getting after that. Please help!
file: solver.h
Code:// file solver.h // Specification of a class providing service of solving // quadratic equations of the form a*b^2 + b*x + c = 0 #ifndef COUNTER_H #define COUNTER_H class solver { public: struct coeffStruct { double coeffs[3]; bool coeffsFlag; // is a equal zero? }; struct rootStruct { double roots[2]; bool rootFlag; // are roots existing? }; public: // Constructor solver(); // Function to read coefficients a, b, c, from the keyboard // and return them into a 3-element array (plus boolean, // whether a is equal zero or not) coeffStruct readCoeffs(); // Function to calculate roots and return them into // a 2-element array (plus Boolean, whether they exist) rootStruct calcRoots(double); // Function to display values of the roots or an error message, // if the roots do not exist void displayRoots(double); private: // Function to calculate the discriminant double discr(double); }; #endif // COUNTER_H
file: solver.cpp
Code:#include "solver.h" #include <iostream> #include <cmath> using namespace std; //////////////////////////////////////////////////////////////////////// // Default constructor solver::solver() { } //////////////////////////////////////////////////////////////////////// solver::coeffStruct solver::readCoeffs() { coeffStruct coeffs; cout << "Enter coefficients in a single line: "; cin >> coeffs.coeffs[0] >> coeffs.coeffs[1] >> coeffs.coeffs[2]; return coeffs; } //////////////////////////////////////////////////////////////////////// solver::rootStruct solver::calcRoots(double coeffs[]) { rootStruct roots; roots.roots[0] = ((-coeffs[1]+sqrt((coeffs[1]*coeffs[1])-(4*coeffs[0]*coeffs[2])))/(2*coeffs[0])); roots.roots[1] = ((-coeffs[1]-sqrt((coeffs[1]*coeffs[1])-(4*coeffs[0]*coeffs[2])))/(2*coeffs[0])); return roots; } //////////////////////////////////////////////////////////////////////// void solver::displayRoots(double roots[]) { if (sqrt((coeffs[0]*coeffs[1]*coeffs[2])) >= 0) { cout << "The solutions of a quadratic equation with coefficients: " << endl; cout << "a = " << coeffs[0] << " b = " << coeffs[1] << " c = " << coeffs[2] << endl; cout << "are as follows " << endl; cout << "Root 1: " << r1 << endl; cout << "Root 2: " << r2 << endl; cout << endl; } else { cout << "The solution of a quadratic equation with coefficients: " << endl; cout << "a = " << coeffs[0] << " b = " << coeffs[1] << " c = " << coeffs[2] << endl; cout << "does not exist in the real domain. " << endl; cout << endl; } } //////////////////////////////////////////////////////////////////////// double solver::discr(double coeffs[]) { double dscrResult = ((coeffs[0]*coeffs[1])-(4*coeffs[0]*coeffs[2])); return dscrResult; }
file: solverTest.cpp
Code:#include "solver.h" #include <iostream> using namespace std; int main(int Nc, char* Nv[]) { solver solve; solver::coeffStruct coeffs; solver::rootStruct roots; coeffs = solve.readCoeffs(); roots = solve.calcRoots(coeffs); solve.discr(coeffs); solve.displayRoots(roots); }
compiled into putty by g++ -o solver solver.cpp solverTest.cpp
errors:
solver.cpp:24: error: prototype for âsolver::rootStruct solver::calcRoots(double*)â does not match any in class âsolverâ
solver.h:32: error: candidate is: solver::rootStruct solver::calcRoots(double)
solver.cpp:34: error: prototype for âvoid solver::displayRoots(double*)â does not match any in class âsolverâ
solver.h:36: error: candidate is: void solver::displayRoots(double)
solver.cpp:52: error: prototype for âdouble solver::discr(double*)â does not match any in class âsolverâ
solver.h:42: error: candidate is: double solver::discr(double)
solverTest.cpp: In function âint main(int, char**)â:
solverTest.cpp:12: error: no matching function for call to âsolver::calcRoots(solver::coeffStruct&)â
solver.h:32: note: candidates are: solver::rootStruct solver::calcRoots(double)
solverTest.cpp:14: error: no matching function for call to âsolver::discr(solver::coeffStruct&)â
solver.h:42: note: candidates are: double solver::discr(double)
solverTest.cpp:15: error: no matching function for call to âsolver::displayRoots(solver::rootStruct&)â
solver.h:36: note: candidates are: void solver::displayRoots(double)



LinkBack URL
About LinkBacks



