[C/C++] Mitternachtsformel mit Fehler

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Staasi, 2. Mai 2007 .

Schlagworte:
  1. 2. Mai 2007
    Mitternachtsformel mit Fehler

    Servus.

    Muss eine von diesen Einsteigerarbeiten fürs c programmieren machen.

    Hab das auch so weit, aber irgendwie steigt er bei der Berechnung der Diskriminanten aus.

    Er schreibt immer "Es gibt eine Loesung bei:nan" und dirket im Anschluss die richtige Lösung Bsp.:"Die Nullstellen befinden sich bei: x1=2 x2=4".

    Hab da irgendwas mit den Klammern oder dem = falsch gemacht.

    PHP:
    // du bist ein Hasenfuß und kannst nix ausser in den PC die scheiß Zahlen rein hobeln

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

    void main  ()

    {
        
    float  a , b , c , radi , x1 , x2 , x3 , x4 ;

        
    printf ( "So du Depp nur weil du zu bloed bist ne Mitternachtsformel zu rechnen haste jetzt das Programm." );

        
    printf ( "Gebe nun BITTE deinen Wert fuer a ein." );
        
    scanf ( "%f" , & a );
        
    printf ( "Gebe nun BITTE deinen Wert fuer b ein." );
        
    scanf ( "%f" , & b );
        
    printf ( "Gebe nun BITTE deinen Wert fuer c ein." );
        
    scanf ( "%f" , & c );

        if(
    a == 0 )

            {if(
    b == 0 )
                 {
    printf ( "Es gibt keine Nullstelle bei a und b gleich 0 du Depp." );
                }

             else

                {     
    x1 =- c / b ;

                         
    printf ( "es gibt nur eine Nullstelle und zwar bei: x=%f" x1 );

                }
            }


        if(
    a != 0 )

        
    radi = pow ( b , 2 )- 4 * a * c ;


                {if (
    radi < 0 )
                    {
    printf ( "Keine reelle Loesung" );
                    }


                {if (
    radi == 0 )

                    
    x2 =- b /( 2 * a );

                    {
    printf ( "Es gibt eine Loesung bei: x=%f" x2 );
                    }
                }
                {if(
    radi > 0 )

                    {

                            
    x3 =(- b - sqrt (( pow ( b , 2 )- 4 * a * c )))/( 2 * a );

                            
    x4 =(- b + sqrt (( pow ( b , 2 )- 4 * a * c )))/( 2 * a );


                    
    printf ( "Die Nullstellen befinden sich bei: x1=%f und x2=%f" x3 , x4 );
                }
                    }
                }


    }
    Danke schonma.

    PS.: Meckert auch ruhig wegen Ordnung oder Umständlichkeit, man ist schließlich hier um was zu lernen.

    PPS.: Bitte doch nicht meckern, hat sich irgendwie bei kopieren alles verschoben.

    PPPS.: Nein es sieht doch wirklich so aus
     
  2. 2. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Rueck den Code mal vernuenftig ein, dann haettest du es auch gesehen.

    Code:
    if (radi==0)
    
     x2=-b/(2*a);
    
     {printf("Es gibt eine Loesung bei: x=%f", x2);
     }
     
  3. 2. Mai 2007
    AW: Mitternachtsformel mit Fehler

    so ich versuchs mal:

    1) das hier da hast geschrieben if(a != 0) und danach keine "{" klammer. erst nach radi = ....
    2) wenn du #include <iostream> benutzt dann kannst du anstatt scnaf("%f... das hier schreiben:
    cin >> a;

    oder zum ausgeben

    cout << "hallo" << endl; // endl ist endline


    PHP:
         if( a != 0 )
             
    radi = pow ( b , 2 )- 4 * a * c ;


                {if (
    radi < 0 )
                    {
    printf ( "Keine reelle Loesung" );
                    } 
    falls das problem nicht gelöst ist. schick mal deine fehlermeldung!!

    gruß wollknoll
     
  4. 2. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Danke euch, aber...

    Zu the dude:

    Habs immer noch nicht gerafft, was du meinst. Hab sämtliche Klammern in dem Bereich entfernt, hinzugefügt... es klappt nicht.



    Zu wollknoll:

    danke dir, aber ich habe ja keine Fehlermeldung. Er gibt, wenn du es ausführst den Satz für radi==0 mit aus obwohl bei der Angabe a=2 b=5 c=2 nur die Antwort für x1 und x2 erscheinen dürften.


    Bewertung trotzdem, ich mag es wenn man sich um mich sorgt
     
  5. 3. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Hi,
    nur mal so, wenn man sich den Code anschaut wird einem ja richtig übel. So viele sinnlose und falsch gesetzte { }-Klammern. Man kann kaum nachvollziehen was der Code überhaupt macht und braucht sich auch nicht wundern wenn er nicht funktioniert...

    Hier, meine Lösung:
    PHP:
    #include <iostream>
    #include <math.h>

    using  namespace  std ;

    int main  ()

    {
        
    float a , b , c , x1 , x2 ;

        
    cout  <<  "Mitternachtsformel by razor 90"  <<  endl ;

        
    //Benötigte Daten einlesen...
        
    cout  <<  "a: " ;
        
    cin  >>  a ;
        
    cout  <<  "b: " ;
        
    cin  >>  b ;
        
    cout  <<  "c: " ;
        
    cin  >>  c ;
        
        
    //Kleiner Fehlercheck... man kann ja nie wissen wie dumm der, der das Programm nutzt, ist... ;)
        
    if ( ==  &&  ==  0 )
        {
            
    cout  <<  "Keine Loesung moeglich bei a=0 und b=0!"  <<  endl ;
            
    system ( "PAUSE" );
            return 
    0 ;
        }
        else if (
    ==  &&  !=  0 )
        {
            
    float tmp  = (- c ) /  b ;
            
    cout  <<  "Nur eine Nullstelle vorhanden: "  <<  tmp  <<  endl ;
            
    system ( "PAUSE" );
            return 
    0 ;
        }

        if (
    !=  0 )
        {
            
    float radi  pow ( b , 2 ) -  c ;

            if (
    radi  0 )
            {
                
    cout  <<  "Keine Reelle Loesung moeglich!"  <<  endl ;
                
    system ( "PAUSE" );
                return 
    0 ;
            }
            else if (
    radi  ==  0 )
            {
                
    cout  <<  "Nur eine Loesung vorhanden: "  << (- b ) / ( 2 ) <<  endl ;
                
    system ( "PAUSE" );
                return 
    0 ;
            }
            else
            {
                
    //Berechnen
                
    x1  = ((- b ) -  sqrt ( pow ( b , 2 ) -  c )) / ( a );
                
    x2  = ((- b ) +  sqrt ( pow ( b , 2 ) -  c )) / ( a );

                
    //Ausgeben
                
    cout  <<  "x1: "  <<  x1  <<  endl ;
                
    cout  <<  "x2: "  <<  x2  <<  endl ;

                
    //Bissl warten damit der nutzer die Chance hat das Ergebnis auch zu lesen :D
                
    system ( "PAUSE" );
                return 
    0 ;
            }
        }
    }
    mfg r90
     
  6. 3. Mai 2007
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Mitternachtsformel mit Fehler

    Nur so nen kleiner Tip am rande:

    Benutz programm die mit der sprache zurechtkommen und dann sowas unterstützen:

    Spoiler
    Bild

    Achte auf die Pfeile und die striche die die eingerückten klammern verbinden!

    Damit kann man man dann schon mal so im groben gucken ob die Klammern richtig gesetzt sind usw!

    Erleichtert das programmieren ungemein!

    In meinem fall heißt das programm:

    Notepad++

    Knusperkeks
     
  7. 3. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Nimm den Code von razor90. Deiner ist voelliger Schwachsinn. Einfach so Klammern ohne Anweisung. Ist zwar moeglich aber sinnlos und von dir mit sicherheit nicht gewuenscht.
     
  8. 13. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Wie wärs mit getch()? Wartet auf einen Tastendruck, somit kann der Nutzer selbst entscheiden, wann er das Ergebnis aufgenommen hat.
     
  9. 13. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Wo ist da der Unterschied ?

    Bei System("pause"); und bei getch(); wird bei einem Tastendruck das Programm beendet.
    Das ist praktisch das selbe, nur mit dem Unterschied, dass bei System("pause"); noch ein kleiner text ausgegeben wird
     
  10. 13. Mai 2007
    AW: Mitternachtsformel mit Fehler

    dann nehm doch einfach folgendes:

    PHP:
    [...]
    #define   BREAK    system("ping -i 3 -w 10000 123.45.67>NUL")

    [...]

    BREAK;
    [...]
    Das sorgt dafür, dass mit "BREAK;" das Programm i Sekunden lang stehen bleibt. In dem Beispiel 3 Sekunden, kann aber nach belieben geändert werden.
    Oder spricht ewtas dagegen?


    Damit kann man - wenn der User etwas sehen will - auch eine Fortschrittsanzeige machen:

    PHP:
    #include <iostream>
    using  namespace  std ;

    #define   BREAK     system("ping -i 0 -w 10000 123.45.67>NUL")

    int main (){
        
        
    cout << "\n\n\n\t 0                                 100"
                  "\n\t/-/"
    ;
        
        for(
    int c c < 35 c ++){
                BREAK;
                
    cout << "\b-/" ;
                }
                
    cout << "\n\n" ;
                
    system ( "pause" );
    }


    Sn0wm4n
     
  11. 13. Mai 2007
    AW: Mitternachtsformel mit Fehler


    Das würde auch so gehen :

    Code:
     #include <windows.h>
    
    int main() {
    
     for(int i = 0;i < 60;i++) {
     cout<<"Verbleibende Zeit:"<<i<<"sekunden";
     Sleep(1000);
     System("cls");
     }
    
    }
    
     
  12. 13. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Jo, das ginge auch. Bis auf die Kleinigkeit, dass man bei "verbleibende Zeit" besser...
    PHP:
    for( int i  60 ; 0 ; i --) 
    ...nehmen sollte
     
  13. 13. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Achso, ich dachte dieser Pause Befehlt pausiert das Programm nur kurz ^^

    Mh bei deiner for-Schleife rast das doch runter oder?
     
  14. 13. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Eben nicht. Durch das Sleep
     
  15. 13. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Wessen For-Schleife meinste eigentlich?
    Bei KTM123 ist klar, wie tHe dUdE schon beschrieben hat.
    Bei meiner mit ping "-i 0" sollte es theoretisch ja 0 Sekunden sein und "einfach runterrasen". Aber
    dem ist nicht so, es gibt eine kleine Verzögerung weil der PC anfängt zu pingen, dann jedoch die "0" sieht und aufhört (glaub ich^^).


    Sn0wm4n
     
  16. 13. Mai 2007
    AW: Mitternachtsformel mit Fehler

    Genau, durch das Sleep wird es verhindert. Allerdings ist diese Methode nicht gerade genau.Je nach Prozessorleistung kann entweder zu schnell oder zu langsam runtergezählt werden.
     
  17. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.