Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Programowanie obiektowe, problem z prostą rzeczą. (Program do obliczania Funkcji kwadratowej)

Ostatnio zmodyfikowano 2016-11-20 14:26
Autor Wiadomość
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
C/C++
#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 ); // delta=-b^2-4ac
    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 );
    // float delta;
    //delta=pow(b,2) - (4 * a * c); //to działa poprawnie
   
   
   
    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.
P-153963
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.
C/C++
#include <iostream>
#include <cmath> // zamiast <math.h>
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 }, // korzystanie z listy inicjalizacyjnej ctora
wspolczynikB { b },
wspolczynikC { c }
{
    delta();
}

void FunkcjaKwadratowa::delta()
{
    wartoscdelta = std::pow( wspolczynikB, 2 ) -( 4 * wspolczynikA * wspolczynikC ); // delta=-b^2-4ac
}

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'; //to działa poprawnie
    return 0;
}

P-153969
NieWychylam
Temat założony przez niniejszego użytkownika
» 2016-11-20 14:26:56
Dziękuję, teraz wszystko się zgadza :)
P-153972
« 1 »
  Strona 1 z 1