programm (arrays)-kurze hilfe

andrea89

Member
25 Juni 2006
15
0
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
 
Zuletzt bearbeitet:
Ich kann weder den Text lesen (hast du den überhaupt von Hand gepostet? sieht ja schon fast nach Script aus, was nicht im Stande is den Zeichensatz einzuhalten), noch den Code lesen (die Regeln besagen, dass du Code- oder PHP-Tags benutzen sollst), noch finde ich irgendwo eine Problembeschreibung, was nicht geht und was du bereits unternommen hast.

Das hier ist nicht das "Hallo, habe keine Ahnung, wer schreibt mir mein Programm?"-Forum :roll:
 
Ich kann weder den Text lesen (hast du den überhaupt von Hand gepostet? sieht ja schon fast nach Script aus, was nicht im Stande is den Zeichensatz einzuhalten), noch den Code lesen (die Regeln besagen, dass du Code- oder PHP-Tags benutzen sollst), noch finde ich irgendwo eine Problembeschreibung, was nicht geht und was du bereits unternommen hast.

Das hier ist nicht das "Hallo, habe keine Ahnung, wer schreibt mir mein Programm?"-Forum :roll:


okay, du hast recht, in dem text waren echt einige komische fehler...hab den auch nur kopiert, das stimmt schon, aber irgendwie muss ich ja schließlich erklären um was es in dem programm gehen soll und selber das gleiche nochmal schreiben ist auch nicht so sinnvoll....
ich will ja auch gar nicht, dass mir irgendjemand mein programm schreibt...schließlich hab ichs ja an sich schon selber geschrieben, nur läufts halt nicht 100%ig...ich hab SE nur als kleines nebenfach und blick da wenn ich ehrlich bin nicht so wirklich durch,, drum weiß ich auch nicht ganz genau wo ich mit fehler suchen anfangen soll...
aber ich nehm mal stark an, dass der Fehler irgendwo beim Einlesen der Zahl vom Benutzer liegt :

gets(Arat); // Zahl einlesen

Das Problem, bzw das was nicht funktioniert ist, dass die richtigen Treffer (egal ob "weiss" oder "schwarz") nicht gezählt werden, alles andere, zB die Anzahl der Versuche und die Ausgabe an sich passen denk ich.

...ich wäre trotz allem dankbar, wenn mir jemand weiterhelfen könnte!!!
lg
 
drum weiß ich auch nicht ganz genau wo ich mit fehler suchen anfangen soll...
Wenn du gar keine Ahnung hast, dann fang oben (ausführungszeitlich gesehen) an. Hast du eine Vermutung, fang da an, wenn du sicher bist, dass es bis zu der vermuteten Stelle funktioniert. Debuggen musst du so oder so.

Zum Einlesen des Integers:
Wenn du direkt einen Integer einlesen willst - ich nehm mal an, du willst in Ansi-C schreiben -, dann nutze scanf(). Du kannst damit direkt in die Adresse eines ints schreiben.

Wie gesagt, den Code kann ich nicht lesen, da überhaupt nix eingerückt is und das Syntaxhighlighting auch nicht an is.