Problem mit einer Quad. Gleichung in C++.. Kann mir jemand helfen???



  • #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>

    int main(void)
    {
    float a;
    float b;
    float c;

    float x1;
    float x2;

    float wurzel;

    printf("Geben sie a ein:");
    scanf("%f",&a);

    printf("Geben sie b ein:");
    scanf("%f",&b);

    printf("Geben sie c ein:");
    scanf("%f",&c);

    wurzel = b*b - 4*a*c;

    {
    if(a==0) // Geradengleichung
    {
    if(b==0)
    {
    if(c==0)
    printf("alle x sind Loesungen\n");
    else
    printf("Keine Loesung\n");
    }

    else
    {
    x1 = -c/b;
    printf("x = %.2f\n",x1);
    }

    }

    else // Quad. Gleichung
    {
    if(wurzel < 0);
    printf("Keine Lösung\n");

    else #####
    {
    if(wurzel == 0);
    {
    x1 = -b/(2*a);
    printf("Doppelte Lösung: x = %.2f\n",x1);
    }

    else
    {
    float diskri = sqrt(wurzel);
    x1 = -b/(2a) + diskri;
    x2 = -b/(2
    a) - diskri;

    printf("Zwei Lösungen:\nx1 = %.2f\nx2 = %.2f\n\n",x1,x2);
    }
    }

    }

    }

    system("pause");
    return 0;
    }

    Fehlermeldung bei #####

    In function 'int main()'
    expected primary-expression befor "else"
    expected';' before "else"

    Habe grad angefangen mit c++, wär echt suepr wenn ihr mir helfen könnten,
    vllt auch ein paar tipps geben um es zu vereinfachen oder sowas

    mfg



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum Mathematik verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dieser Thread wurde von Moderator/in Christoph aus dem Forum Mathematik in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ##### ist irgendwie quatsch. mach das weg, vielleicht funktioniert's dann ja schon.
    🙂



  • schau dir mal die klammerugen deine if und else genau an.



  • Wäre gut, wenn du die

    CODE
    

    Funktion benützen könntest und die Klammern entsprechend zurechtrückst. So ist es ein Unding, zu überprüfen, ob irgendetwas falsch ist.

    Btw, was soll das #### machen oO ?

    LG Jan



  • Bitte cpp Tags benutzen:

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main(void)
    {
             float a;
             float b;
             float c;
    
             float x1;
             float x2;
    
             float wurzel;
    
             printf("Geben sie a ein:");
             scanf("%f",&a);
    
             printf("Geben sie b ein:");
             scanf("%f",&b);
    
             printf("Geben sie c ein:");
             scanf("%f",&c);
    
             wurzel = b*b - 4*a*c;
    
    {
             if(a==0)             // Geradengleichung
             {
                     if(b==0)
                     {
                             if(c==0)
                             printf("alle x sind Loesungen\n");
                             else
                             printf("Keine Loesung\n");
                     }       
    
                     else 
                     {
                          x1 = -c/b;
                          printf("x = %.2f\n",x1);      
                     }
    
             }
    
             else                 // Quad. Gleichung
             {
                     if(wurzel < 0);
                     printf("Keine Lösung\n");
    
                     else  #####
                     {
                          if(wurzel == 0);
                          {
                          x1 = -b/(2*a);
                          printf("Doppelte Lösung: x = %.2f\n",x1);    
                          }
    
                          else
                          {
                          float diskri = sqrt(wurzel);
                          x1 = -b/(2*a) + diskri;
                          x2 = -b/(2*a) - diskri;
    
                          printf("Zwei Lösungen:\nx1 = %.2f\nx2 = %.2f\n\n",x1,x2);
                          }
                     }    
    
             }
    
    }
    
             system("pause");
             return 0;
    }
    


  • Bei dem if über dem markierten else muss das Semikolon weg.



  • Wie schon gesagt das Semikolon ist falsch und zudem, was sollen die {} an den von mir markierten Stellen?

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main(void)
    {
             float a;
             float b;
             float c;
    
             float x1;
             float x2;
    
             float wurzel;
    
             printf("Geben sie a ein:");
             scanf("%f",&a);
    
             printf("Geben sie b ein:");
             scanf("%f",&b);
    
             printf("Geben sie c ein:");
             scanf("%f",&c);
    
             wurzel = b*b - 4*a*c;
    
    { //Was soll das hier?
             if(a==0)             // Geradengleichung
             {
                     if(b==0)
                     {
                             if(c==0)
                             printf("alle x sind Loesungen\n");
                             else
                             printf("Keine Loesung\n");
                     }       
    
                     else 
                     {
                          x1 = -c/b;
                          printf("x = %.2f\n",x1);      
                     }
    
             }
    
             else                 // Quad. Gleichung
             {
                     if(wurzel < 0);
                     printf("Keine Lösung\n");
    
                     else  #####
                     {
                          if(wurzel == 0);
                          {
                          x1 = -b/(2*a);
                          printf("Doppelte Lösung: x = %.2f\n",x1);    
                          }
    
                          else
                          {
                          float diskri = sqrt(wurzel);
                          x1 = -b/(2*a) + diskri;
                          x2 = -b/(2*a) - diskri;
    
                          printf("Zwei Lösungen:\nx1 = %.2f\nx2 = %.2f\n\n",x1,x2);
                          }
                     }    
    
             }
    
    } //Was soll das hier?
    
             system("pause");
             return 0;
    }
    


  • die ##### sollen nur anzeigen was er mir markiert wenn die fehlermeldung kommt, soll jetzt nich bewirken, wollt es euch nur zeigen



  • #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main(void)
    {
             float a;
             float b;
             float c;
    
             float x1;
             float x2;
    
             float wurzel;
    
             printf("Geben sie a ein:");
             scanf("%f",&a);
    
             printf("Geben sie b ein:");
             scanf("%f",&b);
    
             printf("Geben sie c ein:");
             scanf("%f",&c);
    
             printf("Ihre Funktion: %.fx*x+%.fx+%.f = 0\n\n\n",a,b,c);
    
             wurzel = b*b - 4*a*c;
    
             if(a==0)             // Geradengleichung
             {
                     if(b==0)
                     {
                             if(c==0)
                             printf("alle x sind Loesungen\n");
                             else
                             printf("Keine Loesung\n");
                     }       
    
                     else 
                     {
                          x1 = -c/b;
                          printf("x = %.2f\n",x1);      
                     }
    
             }
    
             else                 // Quad. Gleichung
    
                     if(wurzel < 0);
                     printf("Keine Lösung\n");
    
                     else 
                     {
                          if(wurzel == 0);
                          {
                          x1 = -b/(2*a);
                          printf("Doppelte Lösung: x = %.2f\n",x1);    
                          }
    
                          else
                          {
                          float diskri = sqrt(wurzel);
                          x1 = -b/(2*a) + diskri;
                          x2 = -b/(2*a) - diskri;
    
                          printf("Zwei Lösungen:\nx1 = %.2f\nx2 = %.2f\n\n",x1,x2);
                          }
                     }    
    
             system("pause");
             return 0;
    }
    

    habs jetzt etwas abgeändert, was ihr alles gesagt habt
    trotzdem kommt die selbe meldung an der selben stelle



  • Mitchiv schrieb:

    habs jetzt etwas abgeändert, was ihr alles gesagt habt

    Kaum. Du hast ja immer noch ein Semikolon nach dem if und nach dem else fehlt eine öffnende geschweifte Klammer.

    Mitchiv schrieb:

    die ##### sollen nur anzeigen was er mir markiert wenn die fehlermeldung kommt, soll jetzt nich bewirken, wollt es euch nur zeigen

    Dann setze nächstes Mal Dinge, die keinen Einfluss auf den Code haben, in Kommentare, sonst führt das - wie hier gesehen - nur zu Verwirrung. Und poste bitte nur den relevanten Code-Abschnitt (also dort, wo der Fehler war plus einige Zeilen vor- und nachher).

    Benutze ausserdem bitte [cpp]- statt [code]-Tags. Was du machst, ist übrigens nicht C++, sondern C.


Anmelden zum Antworten