Wieso schliesst sich das Programm automatisch?!

Neue Frage »

Auf diesen Beitrag antworten »
tainmi Wieso schliesst sich das Programm automatisch?!

Hi zusammen,
habe ein Programm geschrieben und möchte nun nachdem es das Ergebnis berechnet hat, "stehen bleibt". allerdings schliesst es sich nach der berechnung sofort ohne das ergebnis wie im code angegeben auszugeben. ist ne konsolenanwendung. hier der code:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
 

#include "stdio.h"


int main()
{
	int x=0;
	int y=0;
	int max;
	int z=0;
	printf("Geben sie die hoechste zu ueberpruefende Zahl ein:");
	scanf("%d" ,&max);
	while(x<max){
		x++;
		z=x;
		while(z>1){
	
			if(z%2==0){
				z=z/2;
			}
			else{
				z=3*z+1;
			}
			y++;
		}
printf("gepruefte Zahl:%d\t Anzahl der Durchluaufe:%d\t Ergebniss:%d \n",x , y, z);
}
return x, y, z;
}






Danke für Hilfen.
 
Auf diesen Beitrag antworten »
Karlito

Hi,

das Programm ist doch beendet... Deswegen schließt es sich. Hättest du es auf der Konsole ausgeführt (nicht aus VisualSiudio, Code::Blocks oder woauchimmer heraus) ausgeführt, dann würdest du die Ausgabe des Programms sehen können.

Um das Programm am schließen zu hindern, musst du noch auf eine Eingabe warten...

Versuchs mal hiermit:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
#include "stdio.h"


int main()
{
	int x=0;
	int y=0;
	int max;
	int z=0;
	printf("Geben sie die hoechste zu ueberpruefende Zahl ein:");
	scanf("%d" ,&max);
	while(x<max){
		x++;
		z=x;
		while(z>1){

			if(z%2==0){
				z=z/2;
			}
			else{
				z=3*z+1;
			}
			y++;
		}
		printf("gepruefte Zahl:%d\t Anzahl der Durchluaufe:%d\t Ergebniss:%d \n",x , y, z);
	}
	fflush(stdout);
	fflush(stdin);
	char ch;
	while ((ch = getchar()) != '\n' && ch != EOF);
	printf("Drücke Enter um das Programm zu schließen...");
	getchar();
	return 0;
}


Ich bin leider selbst kein großer C-Kenner. Deshalb weis ich leider nicht, warum

code:
1:
2:
3:
4:
	char ch;
	while ((ch = getchar()) != '\n' && ch != EOF);


erforderlich ist. Lässt du es weg, bekommt getchar auch sofort einen Wert und das Programm schließt sich.

Weiterhin weiß ich nicht was du mit deinem return-Wert bezwecken wolltest. Ein ordnungsgemäßes Beenden des Programms wird jedoch eigtl immer mit dem Wert 0 gekennzeichnet.

VG.

Karlito
Auf diesen Beitrag antworten »
tainmi

Danke für deine Antwort!
Habe das Programm nochmal abgeändert (Wie empfohlen mit return 0) und ich bekomme jetzt eine Ausgabe in der Konsolenanwendung.
Allerdings macht das printf jetzt die Ausgabe nur für das x richtig und beachtet die 2 anderen Variablen gar nicht (y, z) -> siehe Bild im Anhang.

Hat i.einer noch eine Lösung parat? Wink
Auf diesen Beitrag antworten »
Karlito

Hallo,

du verwendest in deinem printf &d anstatt %d!

VG,

Karlito
 
Auf diesen Beitrag antworten »
tainmi

Oh sh*t großes Grinsen
Danke^^
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »