Info2/25.6.4.c

49 lines
2.4 KiB
C

#include <stdio.h>
#include <string.h>
#define MAX_LEN 10 // Eingabe des Wortes kann max. 10 Zeichen lang sein
int eingabefarbe() // Liest eine Farbe und gibt eine Zahl zurück --> Gruen 1, Rot 2, Violett 3
{
int eingabe_als_zahl = 0; // 0 = noch keine gültige Farbe
char *grundfarbe[] = {"Gruen", "Rot", "Violett"}; // Array aus Strings: Erlaubte Farben, die der Benutzer eingeben darf
char eingabeFarbe[MAX_LEN]; // Hier wird die Eingabe des Benutzers gespeichert --> 9 Buchstaben und 1 Enterzeichen
printf("Geben Sie eine Farbe ein (Gruen, Rot, Violett): ");
fgets(eingabeFarbe, MAX_LEN, stdin); // Liest die Eingabe des Benutzers als Text ein und speichert sie in eingabeFarbe
if(eingabeFarbe[strlen(eingabeFarbe)-1] == '\n') // Prüft, ob ein Zeilenumbruch da ist und löscht ihn, damit Vergleich der Farben später funktioniert
eingabeFarbe[strlen(eingabeFarbe)-1] = '\0'; // \n wird ersetzt mit \0 --> Ende Zeichen
for (int i = 0; i < 3; ++i) // Schritt wird 3 mal wiederholt, da drei Farben verfügbar sind
{
if (strcmp(eingabeFarbe, grundfarbe[i]) == 0) // Vergleicht 2 Texte: Der eingegeben wurde & erlaubte Farbe --> Wenn genau gleich, dann gibt strcmp() den Wert 0 zurück
{
eingabe_als_zahl = i + 1; // Wir speichern die Farbe als Zahl --> Gruen 1, Rot 2, Violett 3
return eingabe_als_zahl; // Wird zurück an die main gegeben
}
}
return eingabe_als_zahl; // Wenn keine Zahl passt --> Ungültig (0)
}
int main()
{
int farbe1, farbe2, posTabelle; // 3 Platzhalter werden definiert; posTabelle = um die Mischfarbe aus Tabelle zu holen
char *auswahl[] = {"Gruen", "Gelb", "Blau", "Gelb", "Rot", "Purpur", "Blau", "Purpur", "Violett"}; // 1D-Array: Tabelle mit den Mischfarben, insgesamt 9 zur Auswahl beginnend bei Index 0, also 8
farbe1 = eingabefarbe(); // Farbe 1 wird gespeichert
farbe2 = eingabefarbe(); // Farbe 2 wird gespeichert
if (farbe1 == 0 || farbe2 == 0) // Wenn eine Farbe ungültig ist, dann brechen wir ab und printen
{
printf("Ungültige Eingabe");
return 0;
}
posTabelle = (farbe1 -1) * 3 + farbe2 -1; // Umrechnung von 2D-Tabelle in 1D-Array: farbe1 ist die Zeile und farbe2 ist die Spalte, 3 ist die Anzahl der Spalten pro Zeile
printf("Die Mischfarbe ist dann: %s", auswahl[posTabelle]);
return 0;
}