Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Theoretische Informatik (http://www.informatikerboard.de/board/board.php?boardid=5)
--- Wieso schliesst sich das Programm automatisch?! (http://www.informatikerboard.de/board/thread.php?threadid=1075)


Geschrieben von tainmi am 11.11.2011 um 15:28:

  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.



Geschrieben von Karlito am 12.11.2011 um 14:25:

 

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



Geschrieben von tainmi am 13.11.2011 um 13:35:

 

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



Geschrieben von Karlito am 13.11.2011 um 18:33:

 

Hallo,

du verwendest in deinem printf &d anstatt %d!

VG,

Karlito



Geschrieben von tainmi am 13.11.2011 um 23:21:

 

Oh sh*t großes Grinsen
Danke^^


Forensoftware: Burning Board, entwickelt von WoltLab GmbH