#include #define SUGGAR 0.2 #define MILK 0.1 #define COFFEE 1.2 #define TEA 1.0 using namespace std; class automat { private: float money; float price; float epsilon; bool milk; bool sugar; public: automat(); void add_money(float); float get_money(); bool get_coffee(); bool get_tea(); void add_sugar(); void add_milk(); void print_menue(); bool is_milk(); bool is_sugar(); }; automat::automat() { money = 0; price = 0; epsilon = 0.01; sugar = false; milk = false; } bool automat::is_milk() { return milk; } bool automat::is_sugar() { return sugar; } void automat::add_money(float adding) { money += adding; cout << "Es ist nun " << money << " Euro verfuegbar" << endl; } float automat::get_money() { return money; } void automat::add_sugar() { if(!sugar) { sugar = true; } } void automat::add_milk() { if(!milk) { milk = true; } } void automat::print_menue() { cout << " Kaffeautomat " << endl; cout << " ------------ " << endl; cout << " K - Kaffee" << endl; cout << " T - Tee" << endl; cout << " M - Zusatz : Milch "; if(is_milk()) { cout << "(X)" << endl; } else { cout << " - kostet " << MILK << " Euro "<< endl; } cout << " Z - Zusatz : Zucker "; if(is_sugar()) { cout << "(X)" << endl; } else { cout << " - kostet " << SUGGAR << " Euro" << endl; } cout << " C - Abbrechen \n" << endl; cout << " Aktuelles Guthaben: " << get_money() << " Euro" << endl; } bool automat::get_coffee() { if (is_milk()) { price += MILK; } if (is_sugar()) { price += SUGGAR; } price += COFFEE; if ((money - price) > epsilon) { cout << "Kaffe bitte entnehmen" << endl; money -= price; cout << "Sie bekommen noch " << get_money() << " Euro zurueck" << endl; return false; } else { cout << "BEEP. Sie verfuegen "<< money << endl; price = 0; return true; } return true; } bool automat::get_tea() { if (is_milk()) { price += MILK; } if (is_sugar()) { price += SUGGAR; } price += TEA; if ((money - price) > epsilon) { cout << "Kaffe bitte entnehmen" << endl; money -= price; cout << "Sie bekommen noch " << get_money() << " Euro zurueck" << endl; return false; } else { cout << "BEEP. Sie verfuegen "<< money << endl; price = 0; return true; } return true; } int main() { char s[255]; bool flag = true; automat kaffeautomat; do { kaffeautomat.print_menue(); cin >> s; switch(s[0]) { case 'K': // Kaffee flag = kaffeautomat.get_coffee(); break; case 'T': // Tee flag = kaffeautomat.get_tea(); break; case 'M': // Milch kaffeautomat.add_milk(); break; case 'Z': // Zucker kaffeautomat.add_sugar(); break; case 'C': // Cancel flag = false; cout << "Ring Ring " << kaffeautomat.get_money() << " Euro zurueck! " << endl; break; default: // okay, nicht sauber....falls doch ein Buchstabe gedrueckt.... kaffeautomat.add_money(atof(s)); } } while(flag); return(0); }