witam. próbuje napisać program który po wpisanie A, B, C wyliczy nam deltę, x1,x2, q,p oraz również napisze wzór funkcji. Mam mały problem ponieważ gdy wypisuje mi wzór funkcji w postaci iloczynowej, (np gdy x1=-2 o x2=2) wypisuje dwa razy wzór raz (x–2)(x-2) i drugi raz (x+2)(x-2) chodzi mi o to żeby wypisał mi w poprawnej formie wzór, czyli tylko ten (x+2)(x-2) żeby dwa minusy od razu zamienił na plus. Prosiłbym o pomoc i najlepiej wyjaśnienie gdzie zrobiłem błąd. (program jest nieskończony do końca wiec nie czepiać się reszty)
#include
#include
using namespace std;
int main()
{
char znak;
cout << "co chcesz obliczyc?" << endl << endl;
{
cout << "1. funckja kwadratowa" << endl;
cin >> znak;
}
system( "cls" );
if (znak=='1')
{
float x1,x2,x0,delta,q,p,x3,x4,a,b,c;
cout << "podaj a: "; cin >> a;
cout << "podaj b: "; cin >> b;
cout << "podaj c: "; cin >> c;
system( "cls" );
cout << endl << "a: " << a << " b: " << b << " c: " << c << endl << endl;
delta = (b*b)-4*a*c;
cout << endl << "delta: " << delta << endl << endl;
if (delta>0)
{
x1=((-b-sqrt(delta))/(2*a));
x2=(-b+sqrt(delta))/(2*a);
x3=x1-x1-x1;
x4=x2-x2-x2;
cout << "funkcja ma dwa pierwiastki: " << " x1: " << x1 << " oraz " << "x2: " << x2 << endl << endl;
if (x1>0, x2>=0)
{
cout << "postac iloczynowa funkcji wynosi: f(x)= " << a << "(x-" << x1 << ")(x" << x4 << ")" << endl << endl;
}
if (x1>0, x2<0)
{
cout << "postac iloczynowa funkcji wynosi: f(x)= " << a << "(x-" << x1 << ")(x+" << x4 << ")" << endl << endl;
}
if (x1<0, x2<0)
{
cout << "postac iloczynowa funkcji wynosi: f(x)= " << a << "(x+" << x3 << ")(x+" << x4 << ")" << endl << endl;
}
if (x1<0, x2>=0)
{
cout << "postac iloczynowa funkcji wynosi: f(x)= " << a << "(x+" << x3 << ")(x-" << x2 << ")" << endl << endl;
}
}
else
if (delta<0)
{
cout << "funkcja nieposiada zadnych pierwiastkow" << endl << endl;
}
else
if (delta==0)
{
x0=(-b/(2*a));
cout << "funkcja ma jeden pierwiastek: " << " x0: " << x0 << endl << endl;
}
p = (-b/2*a);
q = (-delta/4*a);
cout << "wierzcholek: p: " << p << " q: " << q << endl << endl;
cout << "postac kanoniczna funkcji wynosi: f(x)= " << a << "(x-" << p << ")^2+" << q << endl << endl;
}
system("PAUSE");
return 0;
}