49 lines
2.4 KiB
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;
|
|
}
|