Kompletnie nie znam się na programowaniu, chciałbym poznać Waszą opinię. Co oprócz zmiennych globalnych i niepotrzebnych funkcji obliczenia(), zapis_funkcji(), ile_miejsc_zerowych() mógłbym zmienić żeby było lepiej w szerokim tego słowa znaczeniu? Czy według Was ten ''kod'' jest w ogóle czytelny?
Funkcja zapis_funkcji() zrobiłem po to, żeby w konsoli estetyczniej wyglądał zapis funkcji. Np. przy podaniu wartości -1 dla wszystkich trzech parametrów a, b, c funkcja wygląda tak:
-x^2 - x - 1
zamiast
-1x^2 + -1x + -1
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double a,b,c,d,pierwiastek_d,x_0,x_1,x_2,p,q;
void obliczenia()
{
d=(pow(b,2)-(4*a*c)); pierwiastek_d=(sqrt(d));
p=x_0=(-b/2*a); q=((-d)/(4*a));
x_1=((-b-pierwiastek_d)/(2*a)); x_2=((-b+pierwiastek_d)/(2*a));
}
void zapis_funkcji()
{
// wspolczynnik a
if ((a!=0)&&(a!=1)&&(a!=-1))
cout << "Funkcja kwadratowa f(x) = " << a << "x^2 ";
else if (a==1)
cout << "Funkcja kwadratowa f(x) = " << "x^2 ";
else if (a==-1)
cout << "Funkcja kwadratowa f(x) = " << "-x^2 ";
else
cout << "Nie istnieje funkcja kwadratowa z wspolczynnikiem a = 0";
// wspolczynnik b
if ((a!=0)&&((b>1)||((b<1)&&(b>0))))
cout << "+ " << b << "x ";
else if ((a!=0)&&(b==1))
cout << "+ x ";
else if (((a!=0)&&(b<0))&&(b!=-1))
cout << "- " << (-b) << "x ";
else if ((a!=0)&&(b==-1))
cout << "- x ";
// wspolczynnik c
if ((a!=0)&&(c>0))
cout << "+ " << c;
else if ((a!=0)&&(c<0))
cout << "- " << (-c);
}
void ile_miejsc_zerowych()
{
if ((a!=0)&&(d>0)) // dwa pierwiastki
cout << " ma dwa miejsca zerowe." << endl;
else if ((a!=0)&&(d==0)) // jeden pierwiastek
cout << " ma jedno miejsce zerowe." << endl;
else if ((a!=0)&&(d<0))// brak pierwiastków
cout << " nie ma miejsc zerowych." << endl;
}
int main()
{
cout << "Podaj wspolczynniki funkcji kwadratowej.\n" << endl;
cout << "Wspolczynnik a: "; cin >> a;
cout << "Wspolczynnik b: "; cin >> b;
cout << "Wspolczynnik c: "; cin >> c;
obliczenia(); cout << endl;
zapis_funkcji();
ile_miejsc_zerowych();
cout << endl << endl << endl;
cout << "Delta: " << d << endl;
if (d>0)
{
cout << "x1: " << setprecision(3) << x_1 << endl;
cout << "x2: " << setprecision(3) << x_2 << endl;
}
if (d==0)
cout << "x0: " << x_0 << endl;
cout << "Wierzcholek W = (" << p << "; " << q << ")" << endl;
return 0;
}