Mögliche Lösung der Kurvendiskussion einer quadratischen Funktion

Zuerst lasse ich die Konstanten p und q eingeben und errechne die Diskriminante D. Nun entscheidet das Programm anhand D wie viele Nullstellen zu berechnen und auszugeben sind. Die Nullstellen lasse ich in der Funktion nullstellen berechnen. Die Parameter sind:

 nullstellen (p, q, Nummer der Nullstelle (1 oder 2)) 

Die Nummer gibt dabei an ob addiert oder subtrahiert werden soll. Wenn die Funktion nur eine Nullstelle hat ergeben die Addition und die Subtraktion der Wurzel zum/vom Rest das gleiche.

main.cpp

#include <iostream>
#include <stdio.h>
#include <math.h>
#include "analysis.h"
 
int main (int argc, char* argv[])
{
    double p, q, d;
    std::cout << "Quadratische Funktion: f(x)=(x*x)+px+q=0 \nGeben Sie p ein: ";
    std::cin >> p;
    std::cout << "\nGeben Sie q ein: ";
    std::cin >> q;
 
    d=((p*p)/4)-q;    // Diskriminante
 
    if (d<0)
    {
        // Keine Nullstellen
        std::cout << "\nDie Funktion f(x)=x²+"<<p<<"*x+"<<q<< " hat keine Nullstellen";
        return 0;
    }
    else if (d==0)
    {
        // Eine Nullstelle
        double x=nullstellen(p,q,1);
        std::cout << "\nDie Funktion f(x)=(x*x)+"<<p<<"*x+"<<q<< " hat eine Nullstelle:";
        std::cout << "\nx="<<x;
        return 1;
    }
    else
    {
        // Zwei Nullstellen
        double x=nullstellen(p,q,1);
        std::cout << "\nDie Funktion f(x)=(x*x)+"<<p<<"*x+"<<q<< " hat zwei Nullstellen:";
        std::cout << "\nx1="<<x;
 
        x=nullstellen(p,q,2);
        std::cout << "\nx2="<<x;
        return 2;
    }
    return 255;
}

analysis.h

#ifndef analysis
#define analysis
 
double nullstellen(double p, double q, int number);
 
#endif

analysis.cpp

#include <math.h>
#include "analysis.h"
 
double nullstellen(double p, double q, int number)
{
    double x;
 
    if (number==1)
    {
        x=-(p/2) + sqrt((p*p)/4-q);
        return x;
    }
    else if (number==2)
    {
        x=-(p/2) - sqrt((p*p)/4-q);
        return x;
    }
    else
    {
        return 0;
    }
}
// Nullstellen   xo=-p/2 +- sqrt((p/2)²-q)