C++ funzione errata

di il
2 risposte

C++ funzione errata

Salve, ho una funzione in una classe che dovrebbe restituire il parallellismo tra due rette (a ,b e c sono i coefficienti rispettivamente della x, della y e dell'intercetta). Il problema sorge quando inserisco il coefficiente b di una delle due rette e lo pongo uguale a 0, in tal caso infatti la funzione mi restituisce il valore true cosa che invece è vera solo se anche l'altra retta ha valore di b=0. Perché avviene ciò? Riporto qui la funzione di parallellismo e quella di calcolo della pendenza che viene invocata
double lineType::slopefun() const
{
    double slope;

    if (b != 0)
        slope = -a/b;

    return slope;
}
bool lineType::isParal(const lineType& otherLine) const
{
    if (slopefun() == otherLine.slopefun() || (b == otherLine.b && b == 0))
        return true;
    else
        return false;
}

2 Risposte

  • Re: C++ funzione errata

    Il controllo nel if viene fatto da sx a dx, quindi viene controllato prima la funzione slopefun che nel caso di b == 0 da come valore di ritorno un valore indefinito in quanto slope non è inizializzato. Quindi può accadere di tutto.
  • Re: C++ funzione errata

    Quindi come posso ovviare al problema? Anche se inizializzassi slope ad un certo valore non avrei risolto la questione.
Devi accedere o registrarti per scrivere nel forum
2 risposte