Suche
Suche Menü

Lösung Teil 1

Ein Lösungsvorschlag zur Übung mit Funktionen Teil 1.

/* Getraenke Automat Version 0.4 */

#include<stdio.h>

// --- Funktions-Prototypen ---------------------------
int auswahlGetraenkeSorte();
int eingabeMenge();
float ermittlePreis(int sorte);
void bezahlen(float zuZahlen);
void ausgabeGetraenke(int sorte, int menge);

// --- Hauptprogramm ----------------------------------
int main() {
	printf("Getraenke Automat v0.4\n\n");

	int sorte, menge, bezahlt;
	float preis, zuZahlen;
	
	sorte = auswahlGetraenkeSorte();
	preis = ermittlePreis(sorte);
	menge = eingabeMenge();
	zuZahlen = preis * menge;
	bezahlen(zuZahlen);
	ausgabeGetraenke(sorte, menge);
	printf("\n\nVielen Dank, bitte entnehmen sie ihre Getraenke.\n");
	
	return 0;
}

// --- Funktionen -------------------------------------
int auswahlGetraenkeSorte() {
	int sorte;
	printf("Waehlen sie ihr Getraenk aus:\n");
	printf("1) Wasser (0,50 Euro)\n");
	printf("2) Limonade (1,00 Euro)\n");
	printf("3) Bier (2,00 Euro)\n\n");
	printf("Geben sie 1, 2 oder 3 ein: ");
	scanf("%d", &sorte);
	return sorte;
}

int eingabeMenge() {
	int menge=1;
	printf("\nGeben sie die gewuenschte Menge ein: ");
	scanf("%d", &menge);
	return menge;
}

/*	ermittelt den Preis zu einer Sorte
	Parameter:	sorte, Nummer der Sorte
	Return-Value:	Preis
*/
float ermittlePreis(int sorte) {
	float preis=0;
	switch(sorte) {
		case 1: preis = 0.5; break;
		case 2: preis = 1.0; break;
		case 3: preis = 2.0; break;
	}
	return preis;
}

void bezahlen(float zuZahlen) {
	printf("\n--- Bezahlvorgang ---\n");
	printf("\nBezahlvorgang abbrechen mit 0\n");
	float einwurf;
	do {
		printf("\nEs fehlen noch %.2f Euro.", zuZahlen);
		printf("\nBitte werfen sie ein Geldstueck ein: ");
		scanf("%f", &einwurf);
		// eingeworfenen Betrag anrechnen
		zuZahlen -= einwurf;
	} while(zuZahlen > 0.0);
	return 1;
}

void ausgabeGetraenke(int sorte, int menge) {
	printf("\n--- Getraenkeausgabe ---\n");
	int i;
	for(i=0; i < menge; i++)  {
		printf("\nFlasche %d von %d der Sorte %d wurde ausgegeben.",
			i+1, menge, sorte);
	}
}