1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | int Kontostand = 5000; // Scheine, die zurück gegeben werden int Fuenfziger; int Zwanziger; int Zehner; void setup() { Serial.begin(9600); // auf serielle Verbindung warten while (!Serial) {;} KontostandAnzeigen(Kontostand); Serial.println(); } void loop() { // abgehobener/eingezahlter Betrag int Betrag; // auf serielle Eingabe warten while (Serial.available() > 0) { // Eingabe im Seriellen Monitor lesen String Eingabe = Serial.readStringUntil(char(13)); Eingabe = Eingabe.substring(0, Eingabe.length()); // Testen, ob das erste Zeichen + oder — ist if (Eingabe.charAt(0) == ‘+’ || Eingabe.charAt(0) == ‘-’) { // Auszahlung if (Eingabe.startsWith(“-”)) { Betrag = Eingabe.toInt() * -1; // Betrag muss durch 10 teilbar sein if (Betrag % 10 == 0) BetragAuszahlen(Betrag); } // Einzahlung if (Eingabe.startsWith(“+”)) { Betrag = Eingabe.toInt(); // Betrag muss durch 10 teilbar sein if (Betrag % 10 == 0) BetragEinzahlen(Betrag); } } } } void BetragEinzahlen(int Betrag) { Kontostand = Kontostand + Betrag; Serial.println(“Du m\u00f6chtest ” + String(Betrag) + ” \u20ac einzahlen.”); AnzahlScheine(Betrag); KontostandAnzeigen(Kontostand); } void BetragAuszahlen(int Betrag) { // der auszuzahlende Betrag ist zu hoch if (Kontostand - Betrag < 0) { Serial.println(“Auszahlung nicht m\u00f6glich!”); Serial.println(“Kontostand ist im Soll: ” + String(Kontostand - Betrag) + ” \u20ac”); Serial.println(“Bitte gib einen kleineren Betrag ein!”); Serial.println(“—————————————-”); } // Betrag auszahlen else { Kontostand = Kontostand - Betrag; Serial.println(“Du m\u00f6chtest ” + String(Betrag) + ” \u20ac abheben.”); Serial.println(“Du bekommst:”); // Anzahl der Scheine (50, 20 und 10) feststellen AnzahlScheine(Betrag); KontostandAnzeigen(Kontostand); } } void KontostandAnzeigen(int Kontostand) { // Kontostand anzeigen Serial.println(“Neuer Kontostand: ” + String(Kontostand) + ” \u20ac”); Serial.println(“——————————————————-”); Serial.println(“Wie viel m\u00f6chtest du einzahlen oder abheben?”); Serial.println(“Der Betrag muss durch 10 teilbar sein!”); Serial.println(“Auszahlung -> dem Betrag ein — Zeichen voranstellen”); Serial.println(“Einzahlung -> dem Betrag ein + Zeichen voranstellen”); Serial.println(“——————————————————-”); } void AnzahlScheine(int Betrag) { // Anzahl der 50er int Rest = Betrag % 50; /* vom Betrag den Rest abziehen Beispiel: 130 % 50 ergibt Rest 30 130 — 30 = 100 100 ist durch 50 teilbar */ Fuenfziger = (Betrag - Rest) / 50; /* Rest berechnen wenn nicht durch 20 teilbar, kann neuerRest nur 10er sein 30 % 20 ergibt Rest 10 */ int neuerRest = Rest % 20; /* Anzahl der 20er der neueRest muss von Rest abgezogen werden -> ergibt die 20er */ Zwanziger = (Rest - neuerRest) / 20; // Anzahl der 10er Zehner = neuerRest / 10; // Anzahl der Geldscheine anzeigen if (Fuenfziger > 0) Serial.println(String(Fuenfziger) + ” F\u00fcnfziger”); if (Zwanziger > 0) Serial.println(String(Zwanziger) + ” Zwanziger”); if (Zehner > 0) Serial.println(String(Zehner) + ” Zehner”); } |
Letzte Aktualisierung: