adi_em Opublikowano 12 Listopada 2007 Zgłoś Opublikowano 12 Listopada 2007 (edytowane) Witam! mam pewien problem. Mam do napisania program liczący f. kwadratową. Ma być prosto samymi if else... Napisałem tak i wywala jeden błąd... //Dev-C++ 4.9.9.2#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <math.h>int main() { double a,b,c;double delta,x,x1,x2;double eZero; printf("Program obliczajacy rownania postaci Ax2BxC;)\n\n");printf("Podaj wspolczynnik a: "); scanf("%f",&a);printf("Podaj wspolczynnik b: "); scanf("%f",&b);printf("Podaj wspolczynnik c: "); scanf("%f",&c);printf("Zakres eZero - zero maszynowe, (postaci 1E^x) gdzie x jest potega:"); scanf("%f", &eZero);//Wczytanie wspolczynnikow a,b,c oraz zakresu(zera maszynowego)if (a==0) {if (b==0) {if (c!=0) printf("a=0 --> jest to funkcja liniowa\n\n b=0 i c jest rozne od 0 --> rownanie sprzeczne\n\n"); } else {printf("Rownanie liniowe tozsamosciowe. Posiada ono nieskonczenie wiele rozwiazan\n\n"); } } else { x=(-c/b); printf("Rownanie liniowe oznaczone z jednym rozwiazaniem:\n\n x=%f\n\n",x); } else { printf("a=0 --> jest to funkcja kwadratowa"); delta=b*b-4*a*c; if (delta==0) // Delta = 0 {x1=-b/(2*a); printf("delta=0\n\n"); printf("Rownanie posiada jeden pierwiastek podwojny: x= %f\n\n",x1); } else [b]<---------- -tutaj!! [/b] expected primary-expression before"else" if (delta>0) //Delta > 0 { x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("delta= %f", delta); printf("Rownanie posiada 2 pierwiastki rzeczywiste:\nx1=%f\nx2=%f\n\n",x1,x2); } else // Delta < 0 (pierwiastki zespolone) {printf("Delta mniejsza od zera --> pierwiastki zespolone : %f + (%f)i\n\n",((-b)/(2*a)),(sqrt(fabs(delta)))/(2*a)); printf("Delta mniejsza od zera --> pierwwiastki zespolone : %f - (%f)i\n\n",((-b)/(2*a)),(sqrt(fabs(delta)))/(2*a)); gechar(); }} return 0;} Co moze byc nie tak? Z góry dzięki!!! Edytowane 12 Listopada 2007 przez adi_em Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
PelzaK Opublikowano 12 Listopada 2007 Zgłoś Opublikowano 12 Listopada 2007 (edytowane) kurde... Kiedy wy się wreszcie nauczycie że błąd jest po to żeby go PRZECZYTAĆ i wiedzieć o co chodzi.. Przy drugim ifie nie masz nawiasów dla if() ps. jak już robisz wcięcia to rób to tak aby spełniały swoje zadanie if (delta==0) // Delta = 0 { x1=-b/(2*a); printf("delta=0\n\n"); printf("Rownanie posiada jeden pierwiastek podwojny: x= %f\n\n",x1); } Edytowane 12 Listopada 2007 przez PelzaK Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
adi_em Opublikowano 12 Listopada 2007 Zgłoś Opublikowano 12 Listopada 2007 (edytowane) "Przeczytałem błąd" ale duzo mi to nie powiedziało. Już zauważyłem to miejsce z nawiasami zanim napisałeś, poprawiłem, nic to nie zmieniło, ale i tak dzięki! :) Edytowane 12 Listopada 2007 przez adi_em Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Prog Opublikowano 12 Listopada 2007 Zgłoś Opublikowano 12 Listopada 2007 PelzaK Ci wszystko napisał. Czytaj błędy ! A po pierwsze jak już decydujesz się na pisanie nawiasów klamrowych to pisz je poprawnie, a nie niechlujnie. #include <stdio.h>#include <stdlib.h>#include <conio.h>#include <math.h>int main() { double a,b,c;double delta,x,x1,x2;double eZero; printf("Program obliczajacy rownania postaci Ax2BxC;)\n\n");printf("Podaj wspolczynnik a: "); scanf("%f",&a);printf("Podaj wspolczynnik b: "); scanf("%f",&b);printf("Podaj wspolczynnik c: "); scanf("%f",&c);printf("Zakres eZero - zero maszynowe, (postaci 1E^x) gdzie x jest potega:"); scanf("%f", &eZero);//Wczytanie wspolczynnikow a,b,c oraz zakresu(zera maszynowego)if (a==0){ if (b==0) { if (c!=0) { printf("a=0 --> jest to funkcja liniowa\n\n b=0 i c jest rozne od 0 --> rownanie sprzeczne\n\n"); } else { printf("Rownanie liniowe tozsamosciowe. Posiada ono nieskonczenie wiele rozwiazan\n\n"); } } else { x=(-c/b); printf("Rownanie liniowe oznaczone z jednym rozwiazaniem:\n\n x=%f\n\n",x); }} else{ printf("a=0 --> jest to funkcja kwadratowa"); delta=b*b-4*a*c; if (delta==0) // Delta = 0 { x1=-b/(2*a); printf("delta=0\n\n"); printf("Rownanie posiada jeden pierwiastek podwojny: x= %f\n\n",x1); } else { if (delta>0) //Delta > 0 { x1=(-b+sqrt(delta))/(2*a); x2=(-b-sqrt(delta))/(2*a); printf("delta= %f", delta); printf("Rownanie posiada 2 pierwiastki rzeczywiste:\nx1=%f\nx2=%f\n\n",x1,x2); } else // Delta < 0 (pierwiastki zespolone) { printf("Delta mniejsza od zera --> pierwiastki zespolone : %f + (%f)i\n\n",((-b)/(2*a)),(sqrt(fabs(delta)))/(2*a)); printf("Delta mniejsza od zera --> pierwwiastki zespolone : %f - (%f)i\n\n",((-b)/(2*a)),(sqrt(fabs(delta)))/(2*a)); getchar(); } }} return 0;} Pozdrawiam. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
adi_em Opublikowano 12 Listopada 2007 Zgłoś Opublikowano 12 Listopada 2007 Wielkie dzięki Panowie!!! Wszystko działa tak jak powinno!!! Śmiga że hej! :D Mogłem go już dopracować tak jak powinno być! Jeszcze raz wielkie dzięki!!!! :razz: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...