Anfängerproblem: Dev.-C++ bricht mittendrin ab

Quarzz

Grünschnabel
Hallo,

ich brauche Hilfe bei einem Abbruchproblem (bin absoluter Neueinsteiger). Ich habe nach Buchvorlage 2 unterschiedliche Quelldateien erstellt und "Kompilieren und Ausführen" veranlasst. Nach den ersten Abfragen hat sich das Fenster jedoch automatisch geschlossen. Nun wollte ich fragen woran das liegen könnte.
Bei dieser Datei findet der Abbruch nach der Abfrage "Anzahl den Nachkommastellen" statt.

Code:
# include <stdio.h>
# include <stdlib.h>

main ()
{
     int z;
     int n;
     int a;
     int x;
      printf ("Zu teilende Zahl:  ");
     scanf  ("%d", &z);
     printf ("Teiler:  ");
     scanf  ("%d", &n);
     printf ("Anzahl Nachkommastellen: ");
     scanf  ("%d", &a);
       x = z/n;
     printf ("Ergebnis = %d.", x);
     
     for ( ; a > 0; a = a-1)
     
     {
     z = 10*(z - n*x);
     if (z == 0)
        break;
         
     x = z/n;  
     printf ("%d", x);
     
     }
     printf ("\n");
     
     }

Vorneweg schon Mal ein dickes Dankeschön
Quarzz
 
Hallo. Dein Problem ist recht einfach;)

Deine Main läuft von oben nach untern ab, und wenn dein Festeraufblizt, also Sich öffnet und erfolgreich (ohne Fehler) beendet wird, ist dies gut!;)

Du hast im Quelltext nirgends einen Pause oder warte o.ä befehl, desshalb läuft das Probramm ab, und scliest sich immer nach erledigen der letzten Funktion;)

Dein Coe sollte so ausehen:
C++:
# include <stdio.h>
# include <stdlib.h>

main ()
{
     int z;
     int n;
     int a;
     int x;
      printf ("Zu teilende Zahl:  ");
     scanf  ("%d", &z);
     printf ("Teiler:  ");
     scanf  ("%d", &n);
     printf ("Anzahl Nachkommastellen: ");
     scanf  ("%d", &a);
       x = z/n;
     printf ("Ergebnis = %d.", x);
     
     for ( ; a > 0; a = a-1)
     
     {
     z = 10*(z - n*x);
     if (z == 0)
        break;
         
     x = z/n;  
     printf ("%d", x);
     
     }
     printf ("\n");

//Ds hinzufügen;)
cin.get();    //erfordert eine Eingabe plus Bestätigung Funktion ist blockierend (Programm steht an dieser Stelle)
return 0; //erfolgreises Beenden der Main Funktion

     
     }

EDIT: Dev-Cpp bricht garnicht ab. Dein kompiler hat damit reichlich wenig zu tun^^ Was "abbricht" ist dein Programm (wie oben gesagt), aber es Läuft ja erfolgreich durch, Eine Konsole wird immer von oben nach untern abgearbeitet, und wenn die lezte Zeile code erreicht ist, scliest das Programm;)
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

danke erst einmal für die schnelle Antwort. Das Problem ist, dass er den Befehl: "printf ("Ergebnis = %d.", x);" in Reihe 17 nicht ausführt und mir kein Ergebnis liefert. Nach Buchanleitung müsste mir das Programm aber ein Ergebnis liefern.
 
Hi.
Hallo,

danke erst einmal für die schnelle Antwort. Das Problem ist, dass er den Befehl: "printf ("Ergebnis = %d.", x);" in Reihe 17 nicht ausführt und mir kein Ergebnis liefert. Nach Buchanleitung müsste mir das Programm aber ein Ergebnis liefern.
Auch ich kann dir nochmal versichern, das das Programm komplett durchläuft.

Ausgabe:
Code:
Zu teilende Zahl:  4944
Teiler:  13
Anzahl Nachkommastellen: 4
Ergebnis = 380.3076
Was ist das denn für ein Buch? Scheint relativ alt oder schlecht zu sein. Die Hauptroutine (main) muss int zurückgeben.

Gruß
 
Hallo,

tja, wenn bei mir auch das Ergebnis "Ergebnis = 380.3076" kommen würde wäre ich sehr glücklich - tut es aber nicht. Sobald ich die Nachkommastellen eingegeben habe und auf Eingabe drücke schließt das Fenster, ohne Ergebnis.

Das Buch ist von Ulrich Kaiser und Christoph Kecher "C/C++ - Das umfassende Lehrbuch", 4. Auflage 08 (überarbeitet und erweitert...) Galileo Press, Bonn

Quarzz
 
Hallo,

tja, wenn bei mir auch das Ergebnis "Ergebnis = 380.3076" kommen würde wäre ich sehr glücklich - tut es aber nicht. Sobald ich die Nachkommastellen eingegeben habe und auf Eingabe drücke schließt das Fenster, ohne Ergebnis.
Wie Marschal bereits erläutert hat macht das Programm nur was es tun soll. Du bist nur zu langsam um das Ergebnis sehen zu können.

Die Berechnung geht ja auch ziemlich schnell - und dann ist das Programm zu Ende. Und am Ende vom Programm schließt sich das Fenster. Ist ja auch logisch...

Wie bereits angesprochen mußt du eine Pause einbauen wenn das Fenster nach der Berechnung und der Ausgabe nicht geschlossen werden soll.

Du könntest z.B. die Funktion getchar() aufrufen, die fragt ein Zeichen ab. D.h. du mußt die Eingabetaste drücken um das Programm zu beenden.

Übrigens, wenn du Code::Blocks verwenden würdest (was ich Dir im Gegensatz zu DevC++ nur empfehlen kann), wird das Fenster nach Programmende nicht geschlossen, so dass du dort solche Dinge nicht beachten mußt.

Gruß
 
Zuletzt bearbeitet:
Zurück