src/Flugi-vz/Rechner_Wellenlaenge2.c aktualisiert

printf Ausgaben angepasst und bei switch case nicht sichtbarer Bereich hinzugefügt
pull/8/head
Ruben Straub 2024-12-17 14:20:02 +01:00
parent abc0cb0671
commit d76d58d382
1 changed files with 142 additions and 136 deletions

View File

@ -1,136 +1,142 @@
#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 bei etwa 650-780 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 bei etwa 585-650 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 bei etwa 575-585 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 bei etwa 490-575 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 bei etwa 450-490 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 bei etwa 380-420 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 wavelenght = 0;
void printColor(int wavelength) { void printColor(int wavelength) {
switch (wavelength) { switch (wavelength) {
case 620 ... 750: // Range for red case 620 ... 750: // Bereich von rotem Licht
printf("Das Licht dieser Wellenlänge ist Rot\n"); printf("Das Licht dieser Wellenlänge ist Rot\n");
break; break;
case 590 ... 619: // Range for orange case 590 ... 619: // Bereich von orangem Licht
printf("Das Licht dieser Wellenlänge ist Orange\n"); printf("Das Licht dieser Wellenlänge ist Orange\n");
break; break;
case 570 ... 581: // Range for yellow case 570 ... 581: // Bereich von gelbem Licht
printf("Das Licht dieser Wellenlänge ist Gelb\n"); printf("Das Licht dieser Wellenlänge ist Gelb\n");
break; break;
case 495 ... 569: // Range for green case 495 ... 569: // Bereich von grünem Licht
printf("Das Licht dieser Wellenlänge ist Grün\n"); printf("Das Licht dieser Wellenlänge ist Grün\n");
break; break;
case 450 ... 494: // Range for blue case 450 ... 494: // Bereich von blauem Licht
printf("Das Licht dieser Wellenlänge ist Blau\n"); printf("Das Licht dieser Wellenlänge ist Blau\n");
break; break;
case 380 ... 449: // Range for violet case 380 ... 449: // Bereich von violettem Licht
printf("Das Licht dieser Wellenlänge ist Violett\n"); printf("Das Licht dieser Wellenlänge ist Violett\n");
break; break;
} case 0 ... 379: // nicht sichtbarer Ultraviolettbereich
} printf("Diese Wellenlänge liegt im nicht-sichtbaren Ultraviolettbereich\n");
break;
// Main Programm default: // nicht sichtbarer Infrarotbereich
int Wellenlaengen_rechner_main() { printf("Diese Wellenlänge liegt im nicht-sichtbaren Infrarotbereich\n");
break;
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"); }
int modus = 0; }
int failcount = 0;
int returncode = 0; // Main Programm
int Wellenlaengen_rechner_main() {
char auswahl[21] = {0};
long wavelength = 0; 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");
char *endptr; int modus = 0;
int failcount = 0;
while (1) { int returncode = 0;
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");
char auswahl[21] = {0};
scanf("%20s", auswahl); long wavelength = 0;
modus = strtol((const char*)auswahl, &endptr, 10); char *endptr;
if (*endptr != 0){ while (1) {
modus = -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");
}
if (*endptr == 'q'){ scanf("%20s", auswahl);
return 10; modus = strtol((const char*)auswahl, &endptr, 10);
}
if (*endptr != 0){
// Ausgabe der Farbe modus = -1;
if (modus==1) { }
if (*endptr == 'q'){
return 10;
printf("Bitte geben Sie eine Wellenlänge ein (in nm): "); }
scanf("%20s", auswahl);
wavelength = strtol((const char*)auswahl, &endptr, 10); // Ausgabe der Farbe
if (modus==1) {
if (*endptr != 0){
wavelength = -1;
} printf("Bitte geben Sie eine Wellenlänge ein (in nm): ");
if (*endptr == 'q'){ scanf("%20s", auswahl);
return 10; wavelength = strtol((const char*)auswahl, &endptr, 10);
}
if (*endptr != 0){
wavelength = -1;
printColor(wavelength); }
} if (*endptr == 'q'){
return 10;
//Ausgabe der Wellenlänge }
else if (modus==2) {
char color[50]; printColor(wavelength);
}
printf("Bitte geben Sie eine Farbe ein (z. B. Rot, Orange, Gelb, Grün, Blau, Violett): ");
scanf("%49s", color); //Ausgabe der Wellenlänge
else if (modus==2) {
// Funktion für Eingabe in Kleinbuchstaben umwandeln abrufen
zuKleinbuchstaben(color); char color[50];
// Funktion für Ausgabe der Wellenlänge abrufen printf("Bitte geben Sie eine Farbe ein (z. B. Rot, Orange, Gelb, Grün, Blau, Violett): ");
returncode = Wellenlaenge(color); scanf("%49s", color);
if (returncode == 10){
return 10; // Funktion für Eingabe in Kleinbuchstaben umwandeln abrufen
} zuKleinbuchstaben(color);
}
// Funktion für Ausgabe der Wellenlänge abrufen
// Ungültige Eingabe returncode = Wellenlaenge(color);
else { if (returncode == 10){
printf("Bitte geben Sie die Nummer eins (1) oder zwei (2) ein. Nichts anderes!!!"); return 10;
} }
} }
}
// Ungültige Eingabe
else {
printf("Bitte geben Sie die Nummer eins (1) oder zwei (2) ein. Nichts anderes!!!");
}
}
}