Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Softwaretechnik (http://www.informatikerboard.de/board/board.php?boardid=18)
----- C - Funktionsausgabe in TXT speichern (http://www.informatikerboard.de/board/thread.php?threadid=2729)


Geschrieben von LightSideOfLife am 06.01.2016 um 14:28:

  C - Funktionsausgabe in TXT speichern

Hallo Leute!
Für mein SoftwareTechnik Praktikum sollte ich einen kleinen Geldautomaten programmieren.
Wir sollten den Automat vor allem in verschiedene Funktionen unterteilen.
Ich habe die Aufgabe bereits gelöst und mein Code sieht nun so aus:

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:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
#include <stdio.h>

int schein[7] = {500,200,100,50,20,10,5};
int scheinanzahl[7] = {0,0,0,0,0,0,0};
FILE *Datei;

int BetragEingeben(){
	int eingabe;
		do{
			printf("Wie viel Geld möchten Sie abheben? (5er Schritte) ");
			scanf("%d", &eingabe);
			if (eingabe % 5 != 0)
				printf("\nUngültige Eingabe! \n\n");
		}
		while (eingabe % 5 != 0);
	return eingabe;
}

int* AnzahlBerechnen(int rest, int i){
		if (rest > 0){
			if (rest >= schein[i]){
				scheinanzahl[i] = rest/schein[i];
				rest = rest % schein[i];}
			AnzahlBerechnen(rest, i+1);
		}
			return scheinanzahl;
}


int Ausgabe(int schein[], int scheinanzahl[]){
	int i;
	printf("\nDer Automat drückt folgende Scheine raus: \n\n Anzahl\t |     Schein\n");
	printf("-----------------------\n");
	for (i = 0; i < 7; i++){
		/*if (scheinanzahl[i] != 0){*/
		printf("   %d \t |\t%d\n",scheinanzahl[i], schein[i]);
		/*}*/
		
	}
}

void Speichern(){
	int i;
	Datei = fopen("Log.txt","w");
	for (i = 0; i < 7; i++)
		fprintf(Datei,"%d x %d, ",scheinanzahl[i], schein[i]);
	fclose(Datei);
}

main()
{
	Ausgabe(schein,AnzahlBerechnen(BetragEingeben(), 0));
	Speichern();
}



Ich möchte jetzt aber nicht (wie bereits geschehen) nur sinngemäß die Lösung in Log.txt speichern, sondern die komplette Ausgabe meiner Funktion "Ausgabe()".
Ich habe es bereits mit stdout versucht aber kam auch nicht weiter.
Falls mir wer helfen kann wäre ich sehr dankbar smile

Freundliche Grüße,
Marvin



Geschrieben von eulerscheZahl am 06.01.2016 um 15:03:

 

Warum machst du dann nicht einfach zu übrigen printf auch alle zu fprintf (bzw. zusätzlich)?
Du solltest die Datei dann aber mit "a" wie append öffnen, statt "w", da sonst alles vorherige ersetzt wird.

Alternativ kannst du auch beim Programmstart sagen, dass die Ausgabe gespeichert werden soll: wenn du das Programm in der Console startest, geht das mit programmname > ausgabe.txt. Dabei wird aber sämtliche Ausgabe umgeleitet.



Geschrieben von LightSideOfLife am 06.01.2016 um 15:28:

 

Danke, ich werde es mal versuchen!



Geschrieben von LightSideOfLife am 07.01.2016 um 14:35:

 

Ich hätte nochmal eine Frage:
Unser Prof gab uns auf die Funktion "AnzahlBerechnen" rekursiv zu lösen.
Meine Funktion ist rekursiv, oder nicht?
Sie ruft sich selbst auf, also gehe ich davon aus, dass dies die korrekte Lösung ist.
Oder müsste ich dies anders lösen?



Geschrieben von Karlito am 07.01.2016 um 14:59:

 

Passt so, ist rekursiv.

Gruß,

Karlito



Geschrieben von Elisa59 am 27.12.2017 um 11:02:

 

Guten Tag,

ich bin über Mr. und Dr. Goohle auf die Aufgabe gestoßen und hab da einige Fragen zu. Ist da jemand eventuell, der mir die ein oder andere Frage beantworten könnte?

Viele Grüße

Elisa


Forensoftware: Burning Board, entwickelt von WoltLab GmbH