Städ­te-Info

struct Stadt
{
  int Platz;
  String Name;
  String KFZ_Kennzeichen;
  float Einwohner;
  String Vorwahl;
  int Hoehe;
  String Land;
};

const int MAX = 4;
/*
  \u00e4d = ä
  \u00df = ß
  \u00fc = ü
  \u00f6 = ö
*/
// Array definieren
Stadt Namen[MAX] =
{
  {1, "Berlin", "B", 3.64, "030", 30, "Berlin"},
  {2, "Hamburg", "HH", 1.84, "040", 6, "Hamburg"},
  {3, "M\u00fcnchen", "M", 1.47, "089", 519, "Bayern"},
  {4, "K\u00f6ln", "K", 1.04, "0221", 53, "NRW"}
};

void setup()
{
  // Zufallsgenerator starten
  randomSeed(analogRead(0));
  Serial.begin(115200);
  
  // auf serielle Verbindung warten
  while (!Serial) {;}

  // Info
  Serial.println("Liste der Gro\u00dfst\u00e4dte mit mehr als 1 Mio Einwohner");
  Serial.println("----------------------------------------------------------------------------------");
  Serial.println("1 = Berlin");
  Serial.println("2 = Hamburg");
  Serial.println("3 = M\u00fcnchen");
  Serial.println("4 = K\u00f6ln");
  Serial.println("5 = Zufall");
  Serial.println("----------------------------------------------------------------------------------");
  Serial.println("Platz\tStadt\t\tKFZ\tEinw. in Mio.\tH\u00f6he\tVorwahl\t\tBundesland");
}

void loop()
{
  // auf serielle Eingabe warten
  while (Serial.available() > 0)
  {
    // Eingabe im Seriellen Monitor lesen
    String Eingabe = Serial.readStringUntil(char(13));
   
    // String Eingabe nach int umwandeln
    // die Funktion ZeigeDaten kann dann direkt aufgerufen werden
    int Auswahl = Eingabe.toInt();

    // wenn Auswahl > 0 und < 5
    // weil das Array mit 0 beginnt, 1 abziehen
    if (Auswahl > 0 && Auswahl < 5) ZeigeDaten(Auswahl - 1);

    // zufällige Auswahl
    if (Auswahl == 5)
    {
      int Minimum = 0;
      int Maximum = 4;
      int Zahl =  random(Minimum, Maximum);
      ZeigeDaten(Zahl);
    }
  }
}

void ZeigeDaten(int i)
{
  // bei der Einwohnerzahl . durch , ersetzen
  String Einwohner =  String(Namen[i].Einwohner);
  Einwohner.replace(".", ",");

  // Daten anzeigen, mit Tabulator (\t) formatieren
  Serial.print(String(Namen[i].Platz) + "\t");
  Serial.print(Namen[i].Name + "\t\t");
  Serial.print(Namen[i].KFZ_Kennzeichen + "\t\t");
  Serial.print(Einwohner + "\t");
  Serial.print(String(Namen[i].Hoehe) + "\t");
  Serial.print(Namen[i].Vorwahl + "\t\t");
  Serial.println(Namen[i].Land);
}

Letzte Aktualisierung: 25. Jul 2023 @ 19:27