Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Program liczący pierwiastki równ. kwadrat. w C

adam cs 28 Kwi 2009 20:14 6389 8
  • #1 28 Kwi 2009 20:14
    adam cs
    Poziom 14  

    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

    Code:
    #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");
                   }
                }
             }
       }
    }

  • #3 28 Kwi 2009 22:50
    Dr.Vee
    VIP Zasłużony dla elektroda

    Tu masz kolejny błąd:

    Code:
    if(delta>0);
    Usuń średnik to będzie ok. No i dodaj \n na końcu napisów bo wszystkie się zlewają w jedno :)

    Pozdrawiam,
    Dr.Vee

  • #4 29 Kwi 2009 08:01
    Xitami
    Poziom 29  

    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.
    3$ax^2+bx+c=0

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

    Powiedzmy, że 3$\Delta>0

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

    3$p

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

    Otrzymuje się troszkę inne rozwiązanie, warto sprawdzić.

  • #5 29 Kwi 2009 14:04
    redie
    Poziom 15  

    Dobrze śmiga ten program, sprawdziłem na kalkulatorze wyniki. Wychodzą identyczne.
    Mógłbyś się jeszcze pochytrzyć o uwzględnienie liczb zespolonych :-)

  • #6 29 Kwi 2009 21:02
    adam cs
    Poziom 14  

    Dżyszla napisał:
    Code:
    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 30 Kwi 2009 01:02
    elektryk
    Poziom 42  

    adam cs napisał:
    Dżyszla napisał:
    Code:
    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 30 Kwi 2009 21:02
    adam cs
    Poziom 14  

    Ok. dzięki wszystkim za pomoc teraz program działa jak należy .
    Pozdrawiam

 
Black Friday do -15%
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME
Ferguson