fork(1) download
  1. /*
  2. Der Getränkeautomat - Einsendeaufgabe 1
  3. */
  4. #include <iostream>
  5. #include <cmath>
  6.  
  7. using namespace std;
  8.  
  9. // die Vereinbarung der Klassen
  10. class muenzeinheit
  11. {
  12. // die Attribute
  13. int betrag;
  14. int nochZuZahlen;
  15. int rueckgeld;
  16.  
  17. public:
  18. // die Methoden
  19. void init();
  20. void muenzenAnnehmen(int wert);
  21. int rueckgeldGeben();
  22. // zum setzen des Betrags
  23. void setBetrag(int preis);
  24. // zum Abfragen des noch zu zahlenden Betrags
  25. int getnochZuZahlen();
  26. };
  27.  
  28. class getraenke
  29. {
  30. // die Attribute
  31. int restFlaschen;
  32. int preisProFlasche;
  33. public:
  34. string getraenk[6];
  35. // die Methoden
  36. void init();
  37. };
  38.  
  39. class getraenkeautomat
  40. {
  41. // die Attribute
  42. int anzahlFlaschen[6];
  43. bool kuehlung;
  44.  
  45. // jetzt ist die Münzeinheit Teil des Getränkeautomaten
  46. muenzeinheit *zahlomat;
  47.  
  48. // die Getränke sind auch Teil des Automaten
  49. getraenke *getromat;
  50.  
  51. public:
  52. // die Methoden
  53. void init();
  54. int getraenkWaehlen();
  55. void getraenkAusgeben(int anzahl, int getraenkeIndex);
  56. void kuehlen(bool anaus);
  57. };
  58.  
  59. void muenzeinheit::init()
  60. {
  61. betrag = 0;
  62. nochZuZahlen = 0;
  63. rueckgeld = 0;
  64. }
  65.  
  66. void muenzeinheit::muenzenAnnehmen(int wert)
  67. {
  68. // den eingeworfenen Betrag abziehen
  69. nochZuZahlen = nochZuZahlen - wert;
  70. }
  71.  
  72. int muenzeinheit::rueckgeldGeben()
  73. {
  74. // den absoluten Wert von nochZuZahlen als Rückgeld liefern
  75. rueckgeld = abs(nochZuZahlen);
  76. return rueckgeld;
  77. }
  78.  
  79. void muenzeinheit::setBetrag(int preis)
  80. {
  81. betrag = preis;
  82. nochZuZahlen = betrag;
  83. }
  84.  
  85. int muenzeinheit::getnochZuZahlen()
  86. {
  87. return nochZuZahlen;
  88. }
  89.  
  90. void getraenke::init()
  91. {
  92. // die Getränke eintragen
  93. getraenk[0] = "Limonade";
  94. getraenk[1] = "Wasser";
  95. getraenk[2] = "Bier";
  96. getraenk[3] = "Apfelsaft";
  97. getraenk[4] = "O-Saft";
  98. getraenk[5] = "Bionade";
  99. }
  100.  
  101. void getraenke::getGetraenk()
  102. {
  103. return getraenk[6];
  104. }
  105.  
  106. void getraenkeautomat::init()
  107. {
  108. // die Anzahl der Flaschen
  109. anzahlFlaschen[0] = 10;
  110. anzahlFlaschen[1] = 7;
  111. anzahlFlaschen[2] = 10;
  112. anzahlFlaschen[3] = 10;
  113. anzahlFlaschen[4] = 8;
  114. anzahlFlaschen[5] = 3;
  115.  
  116. // die Kühlung ist aus
  117. kuehlung = false;
  118.  
  119. // eine Instanz der Münzeinheit erzeugen
  120. zahlomat = new muenzeinheit();
  121. // die Instanz initialisieren
  122. zahlomat->init();
  123.  
  124. // eine Instanz der Getränke erzeugen
  125. getromat = new getraenke();
  126. // die Instanz initialisieren
  127. getromat->init();
  128. }
  129.  
  130. int getraenkeautomat::getraenkWaehlen()
  131. {
  132. int auswahl, anzahl;
  133.  
  134. // die Auswahl
  135. cout << "Bitte waehlen Sie ein Getraenk: " << endl;
  136. cout << "Es gibt folgende Auswahl: " << endl;
  137. for (int index = 0; index < 6; index++)
  138. cout << index+1 << " - " << getromat->getGetraenk[index] << endl;
  139. cout << "Geben Sie die gewuenschte Nummer ein: ";
  140. cin >> auswahl;
  141.  
  142. // gibt es noch Flaschen vom gewählten Getränk?
  143. if (anzahlFlaschen[auswahl-1] != 0)
  144. {
  145. // das Getränk ausgeben
  146. cout << "Wie viele Flaschen moechten Sie? ";
  147. cin >> anzahl;
  148.  
  149. // erst muss bezahlt werden
  150. // der Preis 10 ist fest vorgegeben
  151. cout << "Sie muessen " << anzahl * 10 << " Cent bezahlen." << endl;
  152. zahlomat->setBetrag(anzahl * 10);
  153.  
  154. do {
  155. cout << "Es fehlen noch " << zahlomat->getnochZuZahlen() << " Cent." << endl;
  156. zahlomat->muenzenAnnehmen(3);
  157. } while (zahlomat->getnochZuZahlen() > 0);
  158.  
  159. // das Getränk ausgeben
  160. auswahl = auswahl - 1;
  161. getraenkAusgeben(anzahl, auswahl);
  162.  
  163. }
  164. else
  165. {
  166. cout << "Das gewaehlte Getraenk ist leider nicht mehr vorhanden." << endl;
  167. auswahl = -1;
  168. }
  169. return auswahl;
  170. }
  171.  
  172. void getraenkeautomat::getraenkAusgeben(int anzahl, int getraenkeIndex)
  173. {
  174. // gibt es noch genügend Flaschen
  175. if (anzahl <= anzahlFlaschen[getraenkeIndex])
  176. {
  177. cout << "Sie erhalten " << anzahl << " Flasche(n) " << getromat->getGetraenk[getraenkeIndex] << endl;
  178. anzahlFlaschen[getraenkeIndex] = anzahlFlaschen[getraenkeIndex] - anzahl;
  179. }
  180. else
  181. {
  182. cout << "Es sind nur noch " << anzahlFlaschen[getraenkeIndex] << " Flasche(n) " << getromat->getGetraenk[getraenkeIndex] << " vorhanden.";
  183. cout << " Sie erhalten den Rest." << endl;
  184. anzahlFlaschen[getraenkeIndex] = 0;
  185. }
  186.  
  187. // Geld zurückgeben
  188. cout << "Sie erhalten " << zahlomat->rueckgeldGeben() << " Cent zurueck." << endl;
  189. }
  190.  
  191. void getraenkeautomat::kuehlen(bool anaus)
  192. {
  193. if (anaus == true)
  194. {
  195. kuehlung = true;
  196. cout << "Die Kuehlung ist eingeschaltet. " << endl;
  197. }
  198. else
  199. {
  200. kuehlung = false;
  201. cout << "Die Kuehlung ist ausgeschaltet. " << endl;
  202. }
  203. }
  204.  
  205. int main()
  206. {
  207. int auswahl, anzahl;
  208. // Instanz erzeugen
  209. // der Zeiger auf die Klasse
  210. getraenkeautomat *automat;
  211. automat = new getraenkeautomat();
  212.  
  213. // Instanzen initialisieren
  214. automat->init();
  215.  
  216. // ein Getränk auswählen
  217. do {
  218. auswahl = automat->getraenkWaehlen();
  219. }while (auswahl == -1);
  220.  
  221.  
  222. // die Instanzen freigeben
  223. delete(automat);
  224.  
  225. return 0;
  226. }
  227.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:104:29: error: no ‘void getraenke::getGetraenk()’ member function declared in class ‘getraenke’
 void getraenke::getGetraenk()
                             ^
stdout
Standard output is empty