The thread 0xD88 has exited with code 16 (0x10)
-
Hallo!
Ich hab ein Programm das bei Eingabe einer Höhe (von 2 - 22) eine Pyramide aus Sternchen (*) abbildet.
Bei Eingabe einer 1 (danach erfolgt über eine do-while Schleife eine erneute Eingabe) und anschließend einer 15 bzw. 23 stürtzt das Programm mit folgender Fehlermeldung ab:
The thread 0xD88 has exited with code 16 (0x10).
The program 'c:\Projekte\ansi-c\debug\pyramide.exe' has exited with code 16 (0x10).Ich kann leider absolut nix mit dieser Fehlermeldung anfangen.
-
Kannst du den Quelltext mal posten.
mfg hohesC
-
Hallo da der "Scheyerle" grad net da ist poste ich mal meinen quelltext.
Selbes Problem!
#include <stdio.h> #include <string.h> void main (void) { // Deklaration der Varaiblen char stern[81]; int i; int j; int k; int l; int m; int hoehe; stern[0] = '\0'; i = 1; j = 1; k = 1; l = 0; m = 0; hoehe = 0; // Höhe der Pyramide angeben printf ("Bitte geben Sie die hoehe an (2-20):"); scanf ("%d", &hoehe); m=hoehe; // Prüfung des Gültigen Zahlenbereichs for (m = hoehe; hoehe > 20;) { printf ("Falsche Eingabe! Nur Zahlen zwischen 2 und 20!\n\n\n"); printf ("Bitte geben Sie die hoehe an (2-20):"); scanf ("%d", &hoehe); } for (m = hoehe; hoehe < 2;) { printf ("Falsche Eingabe! Nur Zahlen zwischen 2 und 20!\n\n\n"); printf ("Bitte geben Sie die hoehe an (2-20):"); scanf ("%d", &hoehe); } //Läuft so oft wie die Pyramide Zeilen hat for (k=1; k<=hoehe; k++) { l++; m--; //Erstellt die Leerzeichen vor den Sternen for (j=m; j>=0; j--) { strcat (stern, " "); } //Einfügen der Sterne in jeder Line (hochzählen) for (i=1;i<= l; i++) { strcat (stern, "* "); } // Ausgabe der Pyramide printf ("%s\n", stern); stern[0] = '\0'; } }
-
[OT]es heißt int main[/OT]
Was ist "for (m = hoehe; hoehe > 20;)"?
Ich würde vermuten, dass es amfor (m = hoehe; hoehe > 20;) { printf ("Falsche Eingabe! Nur Zahlen zwischen 2 und 20!\n\n\n"); printf ("Bitte geben Sie die hoehe an (2-20):"); scanf ("%d", &hoehe); } for (m = hoehe; hoehe < 2;) { printf ("Falsche Eingabe! Nur Zahlen zwischen 2 und 20!\n\n\n"); printf ("Bitte geben Sie die hoehe an (2-20):"); scanf ("%d", &hoehe); }
liegt, ich sehe aber den Fehler nicht. Wieso so umständlich? Wieso nicht so?
while(hoehe<2 || hoehe>20) { printf ("Falsche Eingabe! Nur Zahlen zwischen 2 und 20!\n\n\n"); printf ("Bitte geben Sie die hoehe an (2-20):"); scanf ("%d", &hoehe); }
-
Das Problem war, dass m nach einer fehlerhaften Eingabe nicht aktualisert wird.
Wenn du hinter die beiden for Schleifen nochmal
m=hoehe;
sollte es auch funktionieren.
Viele Grüße
Fischi
-
Hallo! Hier mein Quelltext! Ach ja.... Darf ich vorstellen mein Kollege Mr. Paintbrush...... wir haben die geliche Aufgabenstellung und das gleiche Problem!
#include <stdio.h> #include <string.h> void main (void) { unsigned int hoehe; unsigned int i,j,k; char line[81]; hoehe = 0; i = 0; j = 0; k = 0; line[0] = '\0'; // Eingabe der gewünschten Höhe do { printf("Wie hoch soll die Pyramide werden (zwischen 2 und 22): "); scanf("%u", &hoehe); } while (hoehe < 2 || hoehe > 22); j = hoehe; for(i = 1; i <= hoehe; i++) { line[0] = '\0'; // Einfügen der Leerzeichen am Anfang der Linie for(k = j; k > 0; k--) { strcat(line , " "); } j--; //Einfügen der Sterne for(k = i; k > 0; k--) { strcat(line , "* "); } // Ausgeben der Linie printf("%s\n",line); } }
Danke und Gruß