Vergleichen von Arrays
-
Hallo Community
Ich muss als Hausaufgabe ein vereinfachtes Mastermind-Spiel erstellen.
Dabei sollen 4 Zufallszahlen von 1-6 in Array gespeichert werden.
Danach gibt der User je 4 Zahlen von 1-6 ein und es wird folgendes überprüft:
- Eine richtige Zahl an der richtigen Stelle = X
- Eine richtige Zahl an der falschen Stelle = O
- Die Zahl kommt gar nicht vor = " "Nun hab ich das Array mit den Zufallszahlen und das Array mit den Eingaben.
Dabei hab ich mir vorgestellt: (Zz = Zufallszahl, Ein = Eingabe)
Zz[0] vergleichen mit Ein[0]
Ein[1]
Ein[2]
Ein[3]
Zz[1] vergleichen mit Ein[0]und so weiter.
Nun meine Frage: Wie kann ich das am einfachsten bewerkstelligen?
Danke für die Antworten
-
Hi,
das kannst du am einfachsten mit einer Schleife machen.Gruß,
B.B.
-
B.B. schrieb:
Hi,
das kannst du am einfachsten mit einer Schleife machen.Gruß,
B.B.Hab ich mir auch schon überlegt, denke mal das wäre ne verschachtelte nich?
mit switch gehts nicht, da ich bei den case-fällen kein array angeben kann.
-
Ja, mit zwei Schleifen sollte das gehen.
So in etwa(ungetestet):#define N 4 #define TRIALS 10 int have_number( char* Z, char number ) { int index = 0; while ( index < N ) { if ( Z[index] == number ) return index; index++; } return -1; } int main() { char Z[] = {'1','2','3','4'}, // Zufallszahlen. E[5] = {0}; // Eingabe int i = 0, index = 0, hits = 0, trials; for ( trials = 0; trials < TRIALS; trials++ ) { printf ( "(%d/%d) Eingabe: ", trials+1, TRIALS ); scanf ( "%Ns", E ); while ( ( index = fgetc ( stdin ) ) != '\n' ) {} // Puffer leeren. for ( i = 0, hits = 0; i < N; i++ ) { index = have_number ( Z, E[i] ); if ( index < 0 ) printf ( " " ); else if ( index == i ) hits++, printf ( "X" ); else printf ( "O" ); } puts (""); // Neue Zeile. if ( hits == N ) break; } if ( hits == N ) puts ( "You are a winner, Bruder!" ); else puts ( "You are a looser, Bruder!" ); return 0; }
-
Hm, soweit reichen meine Kenntnisse noch nicht aus, bin noch in der Lehre, Schleifen selbst komm ich gut klar aber mit den Befehlen happerts bei deinem Code gerade.
Aktuell sieht mein Code so aus:#include <stdlib.h> #include <stdio.h> #include <string.h> #include <math.h> /* KONSTANTEN ------------------ */ /* VARIABLEN (global) ---------- */ /* HAUPTPROGRAMM --------------- */ int main(){ /* VARIABLEN (lokal) --------- */ int i = 0; int j = 0; int Gewonnen = 0; int Versuche = 0; int Zufallszahl[8]; int Eingabe[8]; char Eingabestring[8]; char Resultat[8]; /* Random-Funktion initialisieren */ srand ( time(NULL) ); /* Intro --------------------- */ /* 4 Zufallszahlen von 1-6 generieren */ while(i < 4){ Zufallszahl[i] = rand()%(6-1+1)+1; ++i; } /* Schleife, damit das Spiel erst endet, wenn alle Zahlen richtig sind */ while(Gewonnen == 0){ /* Die 4 Zahlen als String eingeben */ printf("Bitte die Zeichen eingeben: "); gets(Eingabestring); /* Den String zerlegen */ sscanf(Eingabestring, "%i %i %i %i", &Eingabe[0], &Eingabe[1], &Eingabe[2], &Eingabe[3]); } /* nur während Entwicklungsphase !! */ system("PAUSE"); return 0; } /* ------------------------------------------------------------------------*/