/*
 * Lerneinheit C-Pointer
 * Einheit 4: Pointer & Funktionen
 * Aufgabe 4.2.2: Kaugummiautomat
 * 
 * Schreibe ein Programm für einen Kaugummiautomaten. Folgende Funktionsprototypen
 * sind gegeben:
 * 
 * void aufgeldwarten(int *geldeinwurf_pt);
 * void kaugummiausgeben(int *geldeinwurf_pt, int *geldstand_pt, int *kaugummistand_pt);
 * 
 * Ein „Sensor“ (Eingabeaufforderung über if-Abfrage) soll überprüfen ob 1€
 * eingeworfen worden ist. Wurde der Automat mit 1€ gefüttert so soll
 *  
 * 1. Ein Kaugummi ausgegeben werden (natürlich Symbolisch)
 * 2. Der Zählerstand für die Anzahl der Kaugummis um eins verringert werden
 * 3. Der Zählerstand für sie Summe des Geldes um 1€ erhöht werden
 * 4. Das Programm in den „Sensor“ Modus zurückkehren
 * 
 * Wenn keine Kaugummis mehr im Automaten sind oder die Geldkassette des Automaten
 * mit 100€ gefüllt ist, soll ein Warnhinweis erscheinen mit der Bitte Kaugummis
 * aufzufüllen oder die Geldkassette zu leeren. Viel Spaß dabei!
 */

#include <stdio.h>

void aufgeldwarten(int *geldeinwurf_pt);
void kaugummiausgeben(int *geldeinwurf_pt, int *geldstand_pt, int *kaugummistand_pt);

int main(void)
{
    int kaugummistand=100, *kaugummistand_pt;
    int geldstand=0, *geldstand_pt;
    int geldeinwurf=0, *geldeinwurf_pt;
    
    geldstand_pt=&geldstand;
    kaugummistand_pt=&kaugummistand;
    geldeinwurf_pt=&geldeinwurf;
    printf("Kaugummiautomat bereit.\n\n");
    
    do
    {
        printf("Noch %d Kaugummis im Automat.\n", kaugummistand);
        if((geldstand < 100) && (kaugummistand>0))
        {
          aufgeldwarten(geldeinwurf_pt);
          kaugummiausgeben(geldeinwurf_pt, geldstand_pt, kaugummistand_pt);    
        }
    }while((kaugummistand>0) && (geldstand<=100));
    
    
    printf("Bitte Kaugummis auffuellen und Geldbox leeren!");
      
    fflush(stdin);
    getchar();
    return 0;
}

void aufgeldwarten(int *geldeinwurf_pt)
{
    char janein;    
    do
    {
        printf("Willst du 1 Euro fuer Kaugummi einwerfen?(j/n)\n");
        fflush(stdin);
        janein=getchar();
        
    }while(janein!='j');
    *geldeinwurf_pt=1; 
}

void kaugummiausgeben(int *geldeinwurf_pt, int *geldstand_pt, int *kaugummistand_pt)
{
    *geldeinwurf_pt=0;
    *geldstand_pt=*geldstand_pt+1;
    *kaugummistand_pt=*kaugummistand_pt-1;
    
    printf("Hier ist dein Kaugummi:\n");
    printf("  __\n");
    printf(" /o \\ \n");
    printf(" \\__/\n\n");

}
