logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Błąd kompilacji w programie C do obliczania pierwiastków kwadratowych

adam cs 28 Kwi 2009 20:06 7418 8
REKLAMA
  • #1 6467599
    adam cs
    Poziom 14  
    Posty: 176
    Ocena: 81
    Witam wszystkich.
    Robiłem dzisiaj na laborkach z informatyki program obliczający pierwiastki równania kwadratowego.
    Mam takie pytanie co w tym programie jest źle bo na Dev C++ pokazuje mi błąd na pierwszej klamrze i już nie mogę dojść końca czy to dlatego że w innym programie to kompiluje??czy jak ...
    Ten program jest napisany przeze mnie więc nie jestem do końca pewien czy ma prawo działać.
    oto on

    #include <stdio.h>
    #include <math.h>
    void main (void)
    {
    
    	float a,b,c,p1,p2,delta;
    
    	printf("podaj a");
    	scanf("%f",&a);
    	printf("podaj b");
    	scanf("%f",&b);
    	printf("podaj c");
    	scanf("%f",&c);
    	delta=(b*b)-(4*a*c);
    	p1=((-b-(float)sqrt(delta))/(2*a));
    	p2=((-b+(float)sqrt(delta))/(2*a));
    	if (a==0)
    	{
    		printf("to nie jest rownanie kwadratowe");
    	}
    		
    	else  
    	{
    			printf("to jest rownanie kwadratowe");
    		
    			if(delta>0);
    			{
    				printf("rownanie ma dwa pierwiastki");
    				printf("pierwszy to %f",p1);
                    printf("drugi to %f",p2);
    			
    			
    
    			}
    			else
    			{
    				if (delta==0)
    				{
    					printf("rownanie ma jeden pierw");
    					printf("test to %f", p1);
    			
    				}
    				else
    				{
    					if (delta<0)
    					{
    				
    						printf("brak");
    					}
    				}
    			}
    	}
    }
    
  • REKLAMA
  • #3 6468445
    Dr.Vee
    VIP Zasłużony dla elektroda
    Posty: 1784
    Pomógł: 307
    Ocena: 76
    Tu masz kolejny błąd:Usuń średnik to będzie ok. No i dodaj \n na końcu napisów bo wszystkie się zlewają w jedno :)

    Pozdrawiam,
    Dr.Vee
  • REKLAMA
  • #4 6469032
    Xitami
    Poziom 29  
    Posty: 1130
    Pomógł: 118
    Ocena: 31
    Tak jak wyżej, równanie rozwiązuje się ołówkiem na papierze (wtedy dysponujemy nieskończoną dokładnością.
    Komputer jest pod tym względem nieco upośledzony.
    Dla tego należy robić to nieco inaczej.
    $$ax^2+bx+c=0$$

    $$p=\frac{b}{a},\quad q=\frac{c}{a},\quad\Delta=p^2-4q$$

    Powiedzmy, że $$\Delta>0$$

    $$p>0 \Rightarrow x_1=\frac{-p-\sqrt\Delta}{2},\quad x_2=\frac{q}{x_1}$$

    $$p<0 \Rightarrow x_1=\frac{-p+\sqrt\Delta}{2}\quad x_2=\frac{q}{x_1}$$

    Można sprawdzić np. dla: $$x^2-6.433\cdot x+0.009474=0$$

    Otrzymuje się troszkę inne rozwiązanie, warto sprawdzić.
  • REKLAMA
  • #5 6470186
    redie
    Poziom 16  
    Posty: 169
    Pomógł: 25
    Ocena: 1
    Dobrze śmiga ten program, sprawdziłem na kalkulatorze wyniki. Wychodzą identyczne.
    Mógłbyś się jeszcze pochytrzyć o uwzględnienie liczb zespolonych :-)
  • REKLAMA
  • #6 6472100
    adam cs
    Poziom 14  
    Posty: 176
    Ocena: 81
    Dżyszla napisał:
    int main(int argc, char *argv[])


    ok dzięki a mógłbyś powiedzieć w skrócie co to oznacza? bo bez tego też mi działa...
  • #7 6473181
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    adam cs napisał:
    Dżyszla napisał:
    int main(int argc, char *argv[])
    ok dzięki a mógłbyś powiedzieć w skrócie co to oznacza? bo bez tego też mi działa...
    A widziałeś kiedyś deklarację funkcji main()?
  • #9 6475982
    adam cs
    Poziom 14  
    Posty: 176
    Ocena: 81
    Ok. dzięki wszystkim za pomoc teraz program działa jak należy .
    Pozdrawiam

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik napotkał błąd kompilacji w środowisku Dev C++ przy tworzeniu programu w języku C obliczającego pierwiastki równania kwadratowego. Problem dotyczył składni funkcji głównej `main` (zalecana forma to `int main`) oraz zbędnego średnika po instrukcji `if`. W dyskusji zwrócono również uwagę na kwestie precyzji obliczeń zmiennoprzecinkowych oraz formatowania wyjścia programu. Po zastosowaniu sugerowanych poprawek (zmiana deklaracji `main`, usunięcie średnika), program zaczął działać poprawnie.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA