tiger_ntc 4 Napisano 26 Października 2014 Udostępnij Napisano 26 Października 2014 Witam Zaczynam naukę programowania i na początek mam napisać program który będzie obliczał wartość funkcji kwadratowej. Dla delty mniejszej od zera poprawnie wyświetlany jest komunikat, że funkcja nie posiada pierwiastków. Dla delty większej lub równej zero wyświetla wartość delty =0 i pierwiastki jakieś kompletnie z kosmosu. Co w moim programie jest nie tak ? http://wklej.to/vTskx Jeśli ma to jakieś znaczenie to program pisałem w Visual Studio 2010 Cytuj Link to post Share on other sites
CoJaPacze 26 Napisano 27 Października 2014 Udostępnij Napisano 27 Października 2014 (edytowane) elif (d==0){printf(" Pierwiastek wynosi %d\n", (-b)/2*a); }if (d>0){ printf ("Pierwiastki wynosza %d i %d \n", (-b-sqrt(d))/(2*a), (-b+sqrt(d))/(2*a)); }else {printf(" Funkcja nie ma pierwiastkow \n" ); } Staraj się układać kod w sposób bardziej czytelny Pierwszy błąd to brak nawiasów: d=b*b-4*a*c; zamień na d=(b*b)-(4*a*c); - używanie nawiasów do każdych znaków często rozwiązuje problem. Drugi błąd to: Najpierw przedstawię schemat. if (...) { jakiś fragment kodu } else if (...) { jakiś fragment kodu } else { jakiś fragment kodu } if (d==0){ printf(" Pierwiastek wynosi %d\n", (-b)/2*a); }else if (d>0){ printf ("Pierwiastki wynosza %d i %d \n", (-b-sqrt(d))/(2*a), (-b+sqrt(d))/(2*a)); }else {printf(" Funkcja nie ma pierwiastkow \n" ); } Edytowane 27 Października 2014 przez CoJaPacze 1 Cytuj Link to post Share on other sites
tiger_ntc 4 Napisano 27 Października 2014 Autor Udostępnij Napisano 27 Października 2014 Wprowadziłem twoje porady oraz w linijce printf(" Delta wynosi %d\n",d); zamiast d wpisałem działanie (b*b)-(4*a*c) . Teraz delta jest w końcu dobrze wyświetlana. Dla delty mniejszej lub równej 0 komunikaty są poprawne lecz dla większej od 0 pierwiastki nadal są jakimiś przypadkowymi liczbami. http://wklej.to/lE2Vr Już sobie poradziłem. W linijce printf(" Pierwiastki wynosza %d i %d \n", (-b-x)/(2*a), (-b+x)/(2*a)); zmieniłem %d na %f i już wszystko jest OK. Dzięki za pomoc Cytuj Link to post Share on other sites
Recommended Posts
Dołącz do dyskusji
Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.