hey!
bin gerade dabei ein programm nach vorgegebener aufgabenstellung für die uni zu schreiben und bräuchte kurz eure hilfe, weil es einfach nicht läuft,, ich aber selber meinen fehler nicht finde....wäre echt super w enn mir jemand kurz helfen könnte=):
Problem:
In diesem Ratespiel muss der Spieler versuchen, eine vom Computer generierte Ziffernkombination
herauszufinden. Dabei gelten folgende Regeln:
Die zu erratende Zahl besteht aus vier zufälligen Ziffern {1, 2, 3, ..., 9}
Der Spieler hat maximal 10 Versuche, die Zahl zu erraten.
Der Computer bewertet die Versuche des Spielers, indem er die Anzahl
der sog. schwarzen und weißen Treffer meldet:
– schwarzer Treffer: Die richtige Ziffer steht an der richtigen Stelle der
Zahl.
– weißer Treffer: Die Ziffer ist zwar enthalten, steht aber an der falschen
Stelle.
Aufgabe:
Implementieren Sie das Spiel gemäß o.g. Regeln in einem C-Programm.
Zu Beginn erzeugt der Computer eine vierstellige Zufallszahl. Binden Sie dafür die Bibliotheken stdlib.h und time.h ein und initialisieren Sie den Zufallsgenerator mit folgendem Code: srand((unsigned int) time(NULL)); damit nicht immer die gleiche Zahl generiert wird. Die Funktion rand() liefert als Rückgabewert eine Zufallszahl.
Lesen Sie die Versuche des Spielers ein, bestimmen Sie zunächst die Anzahl der schwarzen, dann die der weißen Treffer und geben Sie diese aus. Beenden Sie das Spiel, falls der Spieler sämtliche Ziffern und deren Stellen richtig geraten hat. Geben Sie die Anzahl der benötigten Versuche aus.
Sind alle Versuche verbraucht, soll das Spiel aufgelöst und die Zahl ausgegeben werden.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (void)
{
int Zahl = 0, i = 0, j = 0, iA = 0, iB = 0, iC = 0, iD = 0, iIndex =0, schwarz = 0, weiss =0; // Variablen definieren
int Azahl[4], Arat[4];
for(i=0; i<4;i++) // beide Arrays werden auf 0 gesetzt
{
Azahl= 0;
Arat = 0;
}
srand((unsigned) time(NULL)); //rand Funktion für zufallszahlen
for(i=0; i<4; i++)
{Zahl = 0;
Zahl = rand(); //Zufallszahl auf Zahl speichern
Zahl = Zahl%9 + 1; //Zufallszahl auf eine Zahl zwischen 1 und 9 bringen
Azahl= Zahl;
}
while(iIndex<9) //schleife für die 10 versuche
{
printf("Bitte geben sie ihre Zahl ein!\n");
gets(Arat); // Zahl einlesen
schwarz = 0;
for (i=0; i<4; i++) // nach schwarzen treffern suchen
{
if(Azahl == Arat)
schwarz +=1;
if(schwarz == 4)
{
printf("Sie haben gewonnen!\n"); //Gewonnen bei 4 richtigen
exit(0); //beenden
}
}
weiss = 0;
for (i=0; i<4; i++)//Nach weissen suchen
{
for(j=0; j<4; j++)
{
if((Arat[j] == Azahl) && (Arat[j] != Azahl[j])) //ausschliessen, dass man schwarze als weisse zählt
{
weiss +=1;
j=4; // ausschliessen, dass weisse doppelt gezählt werden
}
}
}
printf("Schwarz:%i\n", schwarz); //ausgabe der schwarzen und dann weissen
printf("Weiss:%i\n", weiss);
iIndex++;
}
printf("\n\n!!!!!!!!!!Zu viele Versuche!!!!!!!!\n!!!!!!!!!!!!!DU BIST RAUS!!!!!!!!!\n\n\n");
printf("Es Waere: ");
for (i=0; i<4; i++)
{
printf("%i", Azahl);
}
printf(" gewesen!!!!!!!!!!!!!!!!!!\n\n");
return 0;
}
Danke schonmal!!!!
liebe grüße,
andrea
bin gerade dabei ein programm nach vorgegebener aufgabenstellung für die uni zu schreiben und bräuchte kurz eure hilfe, weil es einfach nicht läuft,, ich aber selber meinen fehler nicht finde....wäre echt super w enn mir jemand kurz helfen könnte=):
Problem:
In diesem Ratespiel muss der Spieler versuchen, eine vom Computer generierte Ziffernkombination
herauszufinden. Dabei gelten folgende Regeln:
Die zu erratende Zahl besteht aus vier zufälligen Ziffern {1, 2, 3, ..., 9}
Der Spieler hat maximal 10 Versuche, die Zahl zu erraten.
Der Computer bewertet die Versuche des Spielers, indem er die Anzahl
der sog. schwarzen und weißen Treffer meldet:
– schwarzer Treffer: Die richtige Ziffer steht an der richtigen Stelle der
Zahl.
– weißer Treffer: Die Ziffer ist zwar enthalten, steht aber an der falschen
Stelle.
Aufgabe:
Implementieren Sie das Spiel gemäß o.g. Regeln in einem C-Programm.
Zu Beginn erzeugt der Computer eine vierstellige Zufallszahl. Binden Sie dafür die Bibliotheken stdlib.h und time.h ein und initialisieren Sie den Zufallsgenerator mit folgendem Code: srand((unsigned int) time(NULL)); damit nicht immer die gleiche Zahl generiert wird. Die Funktion rand() liefert als Rückgabewert eine Zufallszahl.
Lesen Sie die Versuche des Spielers ein, bestimmen Sie zunächst die Anzahl der schwarzen, dann die der weißen Treffer und geben Sie diese aus. Beenden Sie das Spiel, falls der Spieler sämtliche Ziffern und deren Stellen richtig geraten hat. Geben Sie die Anzahl der benötigten Versuche aus.
Sind alle Versuche verbraucht, soll das Spiel aufgelöst und die Zahl ausgegeben werden.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main (void)
{
int Zahl = 0, i = 0, j = 0, iA = 0, iB = 0, iC = 0, iD = 0, iIndex =0, schwarz = 0, weiss =0; // Variablen definieren
int Azahl[4], Arat[4];
for(i=0; i<4;i++) // beide Arrays werden auf 0 gesetzt
{
Azahl= 0;
Arat = 0;
}
srand((unsigned) time(NULL)); //rand Funktion für zufallszahlen
for(i=0; i<4; i++)
{Zahl = 0;
Zahl = rand(); //Zufallszahl auf Zahl speichern
Zahl = Zahl%9 + 1; //Zufallszahl auf eine Zahl zwischen 1 und 9 bringen
Azahl= Zahl;
}
while(iIndex<9) //schleife für die 10 versuche
{
printf("Bitte geben sie ihre Zahl ein!\n");
gets(Arat); // Zahl einlesen
schwarz = 0;
for (i=0; i<4; i++) // nach schwarzen treffern suchen
{
if(Azahl == Arat)
schwarz +=1;
if(schwarz == 4)
{
printf("Sie haben gewonnen!\n"); //Gewonnen bei 4 richtigen
exit(0); //beenden
}
}
weiss = 0;
for (i=0; i<4; i++)//Nach weissen suchen
{
for(j=0; j<4; j++)
{
if((Arat[j] == Azahl) && (Arat[j] != Azahl[j])) //ausschliessen, dass man schwarze als weisse zählt
{
weiss +=1;
j=4; // ausschliessen, dass weisse doppelt gezählt werden
}
}
}
printf("Schwarz:%i\n", schwarz); //ausgabe der schwarzen und dann weissen
printf("Weiss:%i\n", weiss);
iIndex++;
}
printf("\n\n!!!!!!!!!!Zu viele Versuche!!!!!!!!\n!!!!!!!!!!!!!DU BIST RAUS!!!!!!!!!\n\n\n");
printf("Es Waere: ");
for (i=0; i<4; i++)
{
printf("%i", Azahl);
}
printf(" gewesen!!!!!!!!!!!!!!!!!!\n\n");
return 0;
}
Danke schonmal!!!!
liebe grüße,
andrea
Zuletzt bearbeitet: