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 am

    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);
            }
    

    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ß


Anmelden zum Antworten