Programowanie obiektowe, problem z prostą rzeczą. (Program do obliczania Funkcji kwadratowej)
Ostatnio zmodyfikowano 2016-11-20 14:26
NieWychylam Temat założony przez niniejszego użytkownika |
Programowanie obiektowe, problem z prostą rzeczą. (Program do obliczania Funkcji kwadratowej) » 2016-11-20 13:40:49 #include <iostream> #include <math.h> using namespace std;
class FunkcjaKwadratowa { private: float wspolczynikA; float wspolczynikB; float wspolczynikC; float wartoscdelta; public: FunkcjaKwadratowa( float, float, float ); void delta(); }; FunkcjaKwadratowa::FunkcjaKwadratowa( float a, float b, float c ) { a = this->wspolczynikA; b = this->wspolczynikB; c = this->wspolczynikC; delta(); }
void FunkcjaKwadratowa::delta() { wartoscdelta = pow( wspolczynikB, 2 ) -( 4 * wspolczynikA * wspolczynikC ); cout << "Delta wyniosi: " << this->wartoscdelta << endl; return; } int main() { cout << "Podaj a" << endl; float a; cin >> a; cout << "Podaj b" << endl; float b; cin >> b; cout << "Podaj c" << endl; float c; cin >> c; FunkcjaKwadratowa FunKw( a, b, c ); return 0; } Problem wygląda tak gdy chce obliczyć deltę i ją wyświetlić obiektowo wynik wychodzi NaN (Not a Number), natomiast gdy robię to samo proceduralnie wynik wychodzi poprawny. |
|
karambaHZP |
» 2016-11-20 14:14:00 1. W konstruktorze jest przypisanie w niewłaściwą stronę. Próbujesz przypisać wartość pól do argumentów ctora. 2. Metoda delta() powinna tylko liczyć deltę, a zwracanie lub wyświetlanie wyniku to już inna funkcjonalność, za którą powinna odpowiadać inna metoda. #include <iostream> #include <cmath> using namespace std;
class FunkcjaKwadratowa { private: float wspolczynikA; float wspolczynikB; float wspolczynikC; float wartoscdelta; public: FunkcjaKwadratowa( float, float, float ); void delta(); float getDelta() const; }; FunkcjaKwadratowa::FunkcjaKwadratowa( float a, float b, float c ) : wspolczynikA { a }, wspolczynikB { b }, wspolczynikC { c } { delta(); }
void FunkcjaKwadratowa::delta() { wartoscdelta = std::pow( wspolczynikB, 2 ) -( 4 * wspolczynikA * wspolczynikC ); }
float FunkcjaKwadratowa::getDelta() const { return this->wartoscdelta; } int main() { cout << "Podaj a" << endl; float a; cin >> a; cout << "Podaj b" << endl; float b; cin >> b; cout << "Podaj c" << endl; float c; cin >> c; FunkcjaKwadratowa FunKw( a, b, c ); std::cout << FunKw.getDelta() << '\n'; std::cout << std::pow( b, 2 ) -( 4 * a * c ) << '\n'; return 0; } |
|
NieWychylam Temat założony przez niniejszego użytkownika |
» 2016-11-20 14:26:56 Dziękuję, teraz wszystko się zgadza :) |
|
« 1 » |