Witam mam problem z poprawnym działaniem programu a mianowice:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
float a0=0.0, a1=0.0, a2=0.0 ,delta=0.0, x1=0.0, x2=0.0, im=0.0, re=0.0;
bool A, B, C;
cout<<"Jest to program obliczajacy pierwiastki rzeczywiste i zespolone funkcji kwadratowej postaci a0x^2+(a1)x+(a2)=0\nPodaj wspolczynniki rownania kwadratowego: \n"
"Podaj wspolczynnik a0 rownania: ";
cin>>a0;
A = cin.good();
if( A == false )
do
{
cout<<"Poproszono Cie o wpisanie wspolczynnika rownania kwadratowego. Zastanow sie jakiej postaci powinien on byc!!!\nPodaj ponownie wspolczynnik a0 rownania:";
cin >> a0;
A = cin.good();
cin.clear(); //kasowanie flagi błędu strumienia
cin.sync(); //kasowanie zbędnych znaków z bufora
} while( !A);
cout<<"Podaj wspolczynnik a1 rownania: ";
cin>>a1;
B = cin.good();
if( B == false )
do
{
cout<<"Poproszono Cie o wpisanie wspolczynnika rownania kwadratowego. Zastanow sie jakiej postaci powinien on byc!!!\nPodaj ponownie wspolczynnik a1 rownania:";
cin >> a1;
B = cin.good();
cin.clear();
cin.sync();
} while( !B);
cout<<"Podaj wspolczynnik a2 rownania: ";
cin>>a2;
C = cin.good();
if( C == false )
do
{
cout<<"Poproszono Cie o wpisanie wspolczynnika rownania kwadratowego. Zastanow sie jakiej postaci powinien on byc!!!\nPodaj ponownie wspolczynnik a2 rownania:";
cin >> a2;
C = cin.good();
cin.clear();
cin.sync();
} while( !C);
cout<<"\nNasze rownanie jest postaci "<<a0<<"x^2+("<<a1<<")x+("<<a2<<")=0\n";
delta=(a1*a1)-(4*a0*a2);
if (a0==0)
{
cout<<"Zle wprawadzone wspolczynniki rownania. Otrzymane rownanie nie jest funkcjia kwadratowa tylko liniowa!!!\n";
}
else if (delta>0)
{
x1=(-a1-sqrt(delta))/(2*a0);
x2=(-a1+sqrt(delta))/(2*a0);
cout<<"Otrzymane pierwiastki rownania kwadratowego to: \nx1= "<<x1<<"\nx2= "<<x2<<"\n";
}
else if (delta==0)
{
x1=(-a1)/(2*a0);
cout<<"Otrzymane pierwiastki x1 i x2 rownania kwadrtawego sa sobie rowne poniewaz obliczony wyroznik rownania kwadratowego wyniosl 0.\nOtrzymany pierwiastek x1=x2=x rownania kwadratowego to: "<<x1<<"\n";
}
else if (delta<0)
{
re=((-a1)/(2*a0));
im=(sqrt(-delta))/(2*a0);
cout<<"Otrzymaliśmy zespolone pierwiastki podanego rownania kwadratowego. Wynosza one odpowiednio:\nx1="<<re<<"+i*"<<im<<"\nx2="<<re<<"-i*"<<im<<"\n";
}
system("PAUSE");
return 0;
Nie wiem dlaczego przy zabezpieczeniu przed wpisywaniem liter, gdy w programie wpiszemy literę zamiast cyfry dla zmiennej a0 komunikat o blędnym wpisaniu wyświetla się dwukrotnie? Czy istnieje możliwośc napisania tego zabezpiecznia prościej? Z góry dziękuję za pomoc