[C++] Udoskonalenie programu - funkcja kwadratowa

jimarcin
Użytkownik
Użytkownik
Posty: 22
Rejestracja: 14 sty 2009, o 19:45
Podziękował: 3 razy
Pomógł: 1 raz

[C++] Udoskonalenie programu - funkcja kwadratowa

Post autor: jimarcin »

Witam, oto mój program do obliczania miejsc zerowych funkcji kwadratowej:

Kod: Zaznacz cały

 #include <iostream> 
 #include <cmath> 
 using namespace std; 

 int main() 
 { 
 double a,b,c,D; 
 cout << "Podaj wspolczynnik a: "; 
 cin >> a; 
 cout << "Podaj wspolczynnik b: "; 
 cin >> b; 
 cout << "Podaj wspolczynnik c: "; 
 cin >> c; 
 D=(b*b)-(4*a*c); 
 if (a == 0) 
 cout << "To nie jest funkcja kwadratowa " << 0; 

 else 
 if (D<0) 
 cout << "Ta funkcja nie ma punktu przeciecia z osia X. Jej wspolrzedne wierzcholka to: " << "(" <<-b/(2*a )<< "," << (4*a)<<")"; 
 else 
 if (D>0) 
 {
 cout << "Ta funkcja ma 2 rozne pierwiastki rzeczywiste: " <<"X1= "<<(-b-sqrt(D))/(2*a)<<" oraz X2= "<<(-b+sqrt(D))/(2*a)<<endl; 
 cout << "Wspolrzedne wierzcholka to: " <<"("<<-b/(2*a)<<","<< (4*a)<<")"; 
 }
 else 
 cout << "Ta funkcja ma tylko 1 rozwiazanie: " << "("<<-b/(2*a)<<","<< (4*a)<<")"; 
 cout << endl; 
 cout << "To koniec programu, nacisnij enter"; 


 cin.ignore(); 
 getchar(); 
 return 0; 
 }
Chciałbym, by przyjmował on "idioto-odporny"; a mianowicie po wprowadzeniu kropki czy litery, ostrzegał komunikatem by do każdej zmiennej wprowadzić liczbę. POMOCY!
filip.wroc
Użytkownik
Użytkownik
Posty: 153
Rejestracja: 17 sty 2010, o 15:37
Płeć: Mężczyzna
Lokalizacja: Wroclaw
Pomógł: 13 razy

[C++] Udoskonalenie programu - funkcja kwadratowa

Post autor: filip.wroc »

zamiast wczytywac wspolczynniki do double, wczytaj je do stringa i sprawdzaj czy w stringu wystepuja tylko cyfry i maksymalnie raz przecinek. jezeli tak, to rzutuj sobie to potem na double i dopiero wtedy uznaj za wspolczynnik.
jimarcin
Użytkownik
Użytkownik
Posty: 22
Rejestracja: 14 sty 2009, o 19:45
Podziękował: 3 razy
Pomógł: 1 raz

[C++] Udoskonalenie programu - funkcja kwadratowa

Post autor: jimarcin »

Rozumiem.
Nie dałoby się tego rozwiązać jakimś mniej czasochłonnym sposobem? warunek if? gdyż nie mam za dużo czasu na skonczenie tego programu ;-d
abc666

[C++] Udoskonalenie programu - funkcja kwadratowa

Post autor: abc666 »

google > c++ isdouble
Nie musisz wymyślać koła
jimarcin
Użytkownik
Użytkownik
Posty: 22
Rejestracja: 14 sty 2009, o 19:45
Podziękował: 3 razy
Pomógł: 1 raz

[C++] Udoskonalenie programu - funkcja kwadratowa

Post autor: jimarcin »

czy dobrze zrozumialem, ze rozwiazanie tkwi w okresleniu zmiennych a,b,c itd jako float/double itd? ale nie chcialbym zeby moj program sie po prostu zamknal po wpisaniu niedozwolonego znaku tylko poinformowal o bledzie usera i poprosil o liczbe
abc666

[C++] Udoskonalenie programu - funkcja kwadratowa

Post autor: abc666 »

wczytujesz stringa
sprawdzasz gotową funkcją isdouble() czy jest to poprawna liczba
jeśli tak to ją zapisujesz jak nie to znowu wczytujesz
wystarczy zwykły do-while
ODPOWIEDZ