Merge pull request 'main' (#8) from straubruben/Photonics-Helfer:main into main

Reviewed-on: #8
main
Thomas Zwicker 2024-12-18 23:10:37 +01:00
commit f84eff9aa5
1 changed files with 148 additions and 136 deletions

View File

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