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