#include #include #include #include // Funktion, um einen String in Kleinbuchstaben umzuwandeln void zuKleinbuchstaben(char* str) { for (int i = 0; str[i]; i++) { str[i] = tolower(str[i]); } } // Funktion, um die Wellenlänge einer Farbe auszugeben int value = 0; int failcount = 0; int returncode = 0; int Wellenlaenge(const char* color) { if (strcmp(color, "rot") == 0) { printf("Die Wellenlänge von rotem Licht liegt im Bereich zwischen 620 und 750 nm.\n"); } else if (strcmp(color, "orange") == 0) { printf("Die Wellenlänge von orangem Licht liegt im Bereich zwischen 590 und 620 nm.\n"); } else if (strcmp(color, "gelb") == 0) { printf("Die Wellenlänge von gelbem Licht liegt im Bereich zwischen 570 und 590 nm.\n"); } else if (strcmp(color, "grün") == 0 || strcmp(color, "gruen") == 0) { printf("Die Wellenlänge von grünem Licht liegt im Bereich zwischen 495 und 570 nm.\n"); } else if (strcmp(color, "blau") == 0) { printf("Die Wellenlänge von blauem Licht liegt im Bereich zwischen 450 und 495 nm.\n"); } else if (strcmp(color, "violett") == 0) { printf("Die Wellenlänge von violettem Licht liegt im Bereich zwischen 380 und 450 nm.\n"); } else if (strcmp(color, "q") == 0) { return 10; } else if (failcount >= 5) { return 20; } else { printf("Oh nein! Diese Farbe kenne ich nicht. Bitte geben sie eine der 6 Grund- oder Komplementärfarben ein.\n"); } failcount++; return 0; } // Funktion, um die Farbe einer Wellenlänge auszugeben int wavelength = 0; void printColor(int wavelength) { if (wavelength < 0){ printf("Ich mag keine negativen Zahlen. Bitte eine positive Zahl eingeben!\n"); return; } switch (wavelength) { case 620 ... 750: // Bereich von rotem Licht printf("Das Licht dieser Wellenlänge ist Rot\n"); break; case 590 ... 619: // Bereich von orangem Licht printf("Das Licht dieser Wellenlänge ist Orange\n"); break; case 570 ... 589: // Bereich von gelbem Licht printf("Das Licht dieser Wellenlänge ist Gelb\n"); break; case 495 ... 569: // Bereich von grünem Licht printf("Das Licht dieser Wellenlänge ist Grün\n"); break; case 450 ... 494: // Bereich von blauem Licht printf("Das Licht dieser Wellenlänge ist Blau\n"); break; case 380 ... 449: // Bereich von violettem Licht printf("Das Licht dieser Wellenlänge ist Violett\n"); break; // nicht sichtbarer Bereich case 0 ... 379: printf("Diese Wellenlänge ist kürzer/kleiner als der Bereich des sichtbaren Lichts\n"); break; default: printf("Diese Wellenlänge ist länger/grösser als der Bereich des sichtbaren Lichts\n"); break; } } // Main Programm int Wellenlaengen_rechner_main() { printf("Guten Tag.\nSie mögen Farben? Dann sind Sie hier genau richtig, denn ich zeige Ihnen den Zusammenhang zwischen der Wellenlänge und der Farbe von Licht.\n"); int modus = 0; int failcount = 0; int returncode = 0; char auswahl[21] = {0}; long wavelength = 0; char *endptr; while (1) { printf("\nFalls Sie die Lichtfarbe des emittierten Lichtes erfahren wollen, drücken Sie die Taste 1. Wenn Sie die Wellenlänge einer bestimmten Lichtfarbe interessiert, drücken Sie die Taste 2.\n"); scanf("%20s", auswahl); modus = strtol((const char*)auswahl, &endptr, 10); if (*endptr != 0){ modus = -1; } if (*endptr == 'q'){ return 10; } // Ausgabe der Farbe if (modus==1) { printf("Bitte geben Sie eine Wellenlänge ein (in nm): "); scanf("%20s", auswahl); wavelength = strtol((const char*)auswahl, &endptr, 10); if (*endptr != 0){ wavelength = -1; } if (*endptr == 'q'){ return 10; } printColor(wavelength); } //Ausgabe der Wellenlänge else if (modus==2) { char color[50]; printf("Bitte geben Sie eine Farbe ein (z. B. Rot, Orange, Gelb, Grün, Blau, Violett): "); scanf("%49s", color); // Funktion für Eingabe in Kleinbuchstaben umwandeln abrufen zuKleinbuchstaben(color); // Funktion für Ausgabe der Wellenlänge abrufen returncode = Wellenlaenge(color); if (returncode == 10){ return 10; } } // Ungültige Eingabe else { printf("Bitte geben Sie die Nummer eins (1) oder zwei (2) ein. Nichts anderes!!!"); } } }