Temat: Dziwny błąd...
-
24-09-2010 21:32 #1Junior Member
- Zarejestrowany
- Sep 2010
- Postów
- 12
Dziwny błąd...
Znalazłem dziwny błąd, gdy delta jest mniejsza od zera pokazują się jakieś głupie wynikiKod:#include <iostream> using namespace std; #include <stdlib.h> #include <math.h> float main() { cout << "a = "; int wa; cin >> wa; cout << "b = "; int wb; cin >> wb; cout << "c = "; int wc; cin >> wc; int delta; delta = wb*wb-4*wa*wc; cout << "Funkcja " << wa <<"x^2+" << wb <<"x+" << wc <<"=0"; if (delta>0) { float w1 = (-1*wb-1*( sqrt(delta)))/(2*wa); float w2 = (-1*wb+( sqrt(delta) ))/(2*wa); cout << "Ma 2 miejsca zerowe: "<< w1 <<" i " << w2 <<" .\n"; } else if (delta==0) { float w3 = (-1*wb)/(2*wa); cout << "Ma 1 miejsce zerowe: " << w3 << " .\n"; } else { cout << "Nie ma miejsc zerowych\n"; } cout << "przecina os y w punkcie (0;"<<wc<<").\n"; float pw = (-1*wb)/(2*wa); \\codzi o ten float qw = (-1*delta)/(4*wa); \\i o ten wzor cout << "Jej wierzcholkiem jest punkt (" << pw << ";" << qw << ").\n\n"; system("PAUSE"); endl; }
a w wszystkich innych wypadkach liczy dobrze
chociaż wszystkie w/w operacje obsługuje jeden wzór
nie wiem gzie jest błąd
-
25-09-2010 08:34 #2Junior Member
- Zarejestrowany
- Sep 2010
- Postów
- 13
Odp: Dziwny błąd...
Masz, teraz powinno działać
Main jest typu int !!!! i zapamiętaj to do końca życiaKod:#include <iostream> using namespace std; #include <stdlib.h> #include <math.h> int main() { float w1,w2; cout << "a = "; float wa; cin >> wa; cout << "b = "; float wb; cin >> wb; cout << "c = "; int wc; cin >> wc; double delta; double(delta = wb*wb-4*wa*wc) ; cout << "Funkcja " << wa <<"x^2+" << wb <<"x+" << wc <<"=0"<<endl ; cout << "Delta: " << delta << endl; if (delta>0) { w1 = (-1*wb-1 * ( sqrt(delta)))/(2*wa); w2 = (-1*wb + ( sqrt(delta) ))/(2*wa); cout << "Ma 2 miejsca zerowe: "<< w1 <<" i " << w2 <<" .\n"; } else if (delta==0) { float w3 = (-1*wb)/(2*wa); cout << "Ma 1 miejsce zerowe: " << w3 << " .\n"; } else { cout << "Nie ma miejsc zerowych\n"; } cout << "przecina os y w punkcie (0;"<<wc<<").\n"; float pw = (-1*wb)/(2*wa); //codzi o ten float qw = (-1*delta)/(4*wa); //i o ten wzor cout << "Jej wierzcholkiem jest punkt (" << int(pw) << ";" << int(qw) << ").\n\n"; return(0); }
Typy się nie zgadzały i kompilator interpretował to na swój sposób
np sqrt to double !! a nie float ;]
umieszczaj zmienne i stale na początku programu bo jeśli ktoś kto czyta
ma problemy z odszukaniem ich deklaracji.

LinkBack URL
About LinkBacks



Odpowiedź z Cytatem
Bookmarks