#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 + Multi-Zitat Zitieren
#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); } + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 ( a == 0 && b == 0 ) { cout << "Keine Loesung moeglich bei a=0 und b=0!" << endl ; system ( "PAUSE" ); return 0 ; } else if ( a == 0 && b != 0 ) { float tmp = (- c ) / b ; cout << "Nur eine Nullstelle vorhanden: " << tmp << endl ; system ( "PAUSE" ); return 0 ; } if ( a != 0 ) { float radi = pow ( b , 2 ) - 4 * a * c ; if ( radi < 0 ) { cout << "Keine Reelle Loesung moeglich!" << endl ; system ( "PAUSE" ); return 0 ; } else if ( radi == 0 ) { cout << "Nur eine Loesung vorhanden: " << (- b ) / ( a * 2 ) << endl ; system ( "PAUSE" ); return 0 ; } else { //Berechnen x1 = ((- b ) - sqrt ( pow ( b , 2 ) - 4 * a * c )) / ( 2 * a ); x2 = ((- b ) + sqrt ( pow ( b , 2 ) - 4 * a * c )) / ( 2 * 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 + Multi-Zitat Zitieren
#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 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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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"); } } + Multi-Zitat Zitieren
#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 ; i > 0 ; i --) ...nehmen sollte + Multi-Zitat Zitieren
#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? + Multi-Zitat Zitieren
#14 13. Mai 2007 AW: Mitternachtsformel mit Fehler Eben nicht. Durch das Sleep + Multi-Zitat Zitieren
#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 + Multi-Zitat Zitieren
#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. + Multi-Zitat Zitieren