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