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: