2024-12-17 14:20:02 +01:00
# include <stdio.h>
# include <string.h>
# include <ctype.h>
# include <stdlib.h>
// 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 ) {
2024-12-17 14:28:44 +01:00
printf ( " Die Wellenlänge von rotem Licht liegt im Bereich zwischen 620 und 750 nm. \n " ) ;
2024-12-17 14:20:02 +01:00
} else if ( strcmp ( color , " orange " ) = = 0 ) {
2024-12-17 14:28:44 +01:00
printf ( " Die Wellenlänge von orangem Licht liegt im Bereich zwischen 590 und 620 nm. \n " ) ;
2024-12-17 14:20:02 +01:00
} else if ( strcmp ( color , " gelb " ) = = 0 ) {
2024-12-17 14:28:44 +01:00
printf ( " Die Wellenlänge von gelbem Licht liegt im Bereich zwischen 570 und 590 nm. \n " ) ;
2024-12-17 14:20:02 +01:00
} else if ( strcmp ( color , " grün " ) = = 0 | | strcmp ( color , " gruen " ) = = 0 ) {
2024-12-17 14:28:44 +01:00
printf ( " Die Wellenlänge von grünem Licht liegt im Bereich zwischen 495 und 570 nm. \n " ) ;
2024-12-17 14:20:02 +01:00
} else if ( strcmp ( color , " blau " ) = = 0 ) {
2024-12-17 14:28:44 +01:00
printf ( " Die Wellenlänge von blauem Licht liegt im Bereich zwischen 450 und 495 nm. \n " ) ;
2024-12-17 14:20:02 +01:00
} else if ( strcmp ( color , " violett " ) = = 0 ) {
2024-12-17 14:28:44 +01:00
printf ( " Die Wellenlänge von violettem Licht liegt im Bereich zwischen 380 und 450 nm. \n " ) ;
2024-12-17 14:20:02 +01:00
} 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
2024-12-18 22:25:06 +01:00
int wavelength = 0 ;
2024-12-17 14:20:02 +01:00
void printColor ( int wavelength ) {
2024-12-18 22:25:06 +01:00
if ( wavelength < 0 ) {
printf ( " Ich mag keine negativen Zahlen. Bitte eine positive Zahl eingeben! \n " ) ;
return ;
}
2024-12-17 14:20:02 +01:00
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 ;
2024-12-17 14:28:44 +01:00
case 570 . . . 589 : // Bereich von gelbem Licht
2024-12-17 14:20:02 +01:00
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 ;
2024-12-18 22:25:06 +01:00
// nicht sichtbarer Bereich
case 0 . . . 379 :
printf ( " Diese Wellenlänge ist kürzer/kleiner als der Bereich des sichtbaren Lichts \n " ) ;
2024-12-17 14:20:02 +01:00
break ;
2024-12-18 22:25:06 +01:00
default :
printf ( " Diese Wellenlänge ist länger/grösser als der Bereich des sichtbaren Lichts \n " ) ;
2024-12-17 14:20:02 +01:00
break ;
}
}
// Main Programm
int Wellenlaengen_rechner_main ( ) {
printf ( " Guten Tag. \n Sie 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 ( " \n Falls 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!!! " ) ;
}
}
}