Brauche Hilfe für Mastermind c++
-
Ich Brauche dringend Hilfe... Programmiere erst seid kurzem und komme bei meinem programm einfach nicht weiter... es ist eine Belegarbeit, ich kann machen was ich will ich komme nicht weiter könnte mir bitte bitte jemand helfen. Also das ist meine aufganstellung
Schreiben Sie ein C-Programm für eine Spielvariante von Mastermind.
Es ist ein 3 stelliger Code zu erraten, der vom Programm mittels Zufallszahlengenerator bestimmt
wird. Dabei können alle Ziffern von 1-8 ohne Wiederholung verwendet werden, d.h. jede Ziffer
kommt maximal einmal vor. Nach jedem Versuch werden zwei Ergebniszahlen als Hinweise
ausgegeben, inwieweit der Versuch mit dem gesuchten Code übereinstimmt.
Die erste Ergebniszahl gibt an, wie viele Ziffern exakt mit dem gesuchten Zahlencode
übereinstimmen; d.h. an der richtigen Position stehen.
Die zweite Ergebniszahl gibt an, wie viele Ziffern im gesuchten Zahlencode zwar enthalten sind,
aber nicht an der richtigen Position stehen.
Aus den gegebenen Hinweisen können Sie den gesuchten Zahlencode eindeutig ermitteln. Wurde
der Code nach 10 Versuchen nicht gefunden, gibt das Programm die richtige Lösung aus und
endet. Hinweise zur Programmstruktur gibt es in der Übung und Vorlesung.
Die Ausgabe kann individuell gestaltet werden z.B.
------------------
| 3 | 1 | 4 | 1 1 oder 314 1 1
------------------
| 2 | 7 | 3 | 0 1 oder 273 0 1
------------------
| 8 | 5 | 3 | 0 0 oder 853 0 0
------------------
| 4 | 1 | 2 | 3 0 oder 412 3 0
------------------
Anschließend soll das Programm den Nutzer fragen, ob er weiterspielen möchte.
12 Pkt
Mögliche fakultative Erweiterung:
- Der Nutzer kann die Anzahl der Stellen festlegen (2-5).
- Der Nutzer kann die Anzahl der zulässigen Ziffern festlegen (2-9).
- Der Nutzer kann festlegen, ob der Code Wiederholungen enthalten darf oder nicht.
max. 4 PktSo und das hab ich bis jetzt...
#include <math.h>
#include <iostream>
#include <time.h>
using namespace std;int zufallszahl()
{
int w;
w=ceil(rand()/32768.0*7+1); //zufall von 1 bis 8
return(w);
}
main()
{
int w;
int i,r;
int code[3];
int versuch[3];
int ziffer[9]={0,0,0,0,0,0,0,0,0};
srand (time(0)*1917);
cout<<"Mastermind"<<endl;//zufallszahlen erzeugen
for (i=0;i<3;i++)
{
w=zufallszahl();
while (ziffer[w]==1)
{
w=zufallszahl();
// cout << " w = " << w;
// cout <<"ziffer " << ziffer[w] ;
}
// cout << " code = " << w << endl;code[i]=w;
ziffer[w]=1;
}
cout << "code ="<<code[0]<<" "<<code[1]<<" "<<code[2]<<endl;//zahl vom nutzer einlesen
cout << "Bitte geben sie ihren versuch ziffernweise ein(0<=w<=9)" << endl;
cin >> versuch[0]>> versuch[1]>> versuch [2];
// vergleich auf richtige position
r=0;
for (i=0;i<3;i++)
if(code[i]==versuch[i]) r++;cout<< "richtige position"<< r <<endl;
// vergleich auf falsche position
{
int t=0;for (i=0;i<3;i++)
if(code[i]==versuch[i]) t++;
cout<< "falsche Position"<< t <<endl;{
}
}
system("pause");
}
bitte kann mir dringend jemand helfen
-
gbhjkrhb schrieb:
bitte kann mir dringend jemand helfen

Vermutlich ja, aber was ist deine Frage? Auf eine hingeklatschte Aufgabenstellung und die Aufforderung "mach das mal jemand für mich" reagiert bestimmt niemand.
-
ich bekomme das nicht hin auf die falsche position zu überprüfen da bleibe ich irgendwie hängen das programm macht es einfach nicht die richtige ermittelt es mir aber die falsche nicht
-
Der Code ist nicht standardkonform und sieht mehr wie C als C++ aus.
-
hmmmm aber beim vergleich auf richtige position funktioniert es und bei anderen aufgaben hat es unserer prof so gemacht mit uns....
-
Editier erstmal bitte dein posting und füg cpp-tags ein, dazu ne einigermassen sinnvolle Formatierung.
So macht es nicht wirklich Spass, sich den code durchzulesen.Und warum funktioniert das Überprüfen auf falsche Positionen wohl nicht? Weil du einfach genau das gleiche hingeschrieben hast wie bei der Überprüfung auf richtige Positionen.
-
es stand schon anders da mit anderen variablen aber das hat auch nicht geklappt
...das da das gleiche steht weiß ich... für mich ist das alles echt bahnhof#include <math.h>
#include <iostream>
#include <time.h>
using namespace std;int zufallszahl()
{
int w;
w=ceil(rand()/32768.0*7+1); //zufall von 1 bis 8
return(w);
}
main()
{
int w;
int i,r;
int code[3];
int versuch[3];
int ziffer[9]={0,0,0,0,0,0,0,0,0};
srand (time(0)*1917);
cout<<"Mastermind"<<endl;//zufallszahlen erzeugen
for (i=0;i<3;i++)
{
w=zufallszahl();
while (ziffer[w]==1)
{
w=zufallszahl();
// cout << " w = " << w;
// cout <<"ziffer " << ziffer[w] ;
}
// cout << " code = " << w << endl;code[i]=w;
ziffer[w]=1;
}
cout << "code ="<<code[0]<<" "<<code[1]<<" "<<code[2]<<endl;//zahl vom nutzer einlesen
cout << "Bitte geben sie ihren versuch ziffernweise ein(0<=w<=9)" << endl;
cin >> versuch[0]>> versuch[1]>> versuch [2];
// vergleich auf richtige position
r=0;
for (i=0;i<3;i++)
if(code[i]==versuch[i]) r++;cout<< "richtige position"<< r <<endl;
// vergleich auf falsche position
{
int t=0;for (i=0;i<3;i++)
if(code[i]==versuch[i]) t++;cout<< "falsche Position"<< t <<endl;
{
}
}
system("pause");
}
-
was ist ein cpp tag seht ihr nichtmal das weiß ich
-
achso falls das hilft wir arbeiten mit dev cpp
-
gbhjkrhb schrieb:
was ist ein cpp tag seht ihr nichtmal das weiß ich
Guck mal beim Verfassen eines Beitrags hier im Forum links unter den Smileys. Der Knopf C/C++ macht, dass dein Code so hübsch aussieht:
int main() { }Da du registriert bist, kannst du deine Beiträge auch noch nachträglich entsprechend ändern. (Ok, ich als Moderator könnte das auch, aber ein bisschen Eigeninitiative darf sein)
gbhjkrhb schrieb:
achso falls das hilft wir arbeiten mit dev cpp
Auch das ist nicht gut:
Dev-C++ ist veraltet!
-
aber damit müssen wir arbeiten
#include <math.h>
#include <iostream>
#include <time.h>
using namespace std;int zufallszahl()
{
int w;
w=ceil(rand()/32768.0*7+1); //zufall von 1 bis 8
return(w);
}
main()
{
int w;
int i,r,t;
int code[3];
int versuch[3];
int ziffer[9]={0,0,0,0,0,0,0,0,0};
srand (time(0)*1917);
cout<<"Mastermind"<<endl;//zufallszahlen erzeugen
for (i=0;i<3;i++)
{
w=zufallszahl();
while (ziffer[w]==1)
{
w=zufallszahl();
// cout << " w = " << w;
// cout <<"ziffer " << ziffer[w] ;
}
// cout << " code = " << w << endl;code[i]=w;
ziffer[w]=1;
}
cout << "code ="<<code[0]<<" "<<code[1]<<" "<<code[2]<<endl;//zahl vom nutzer einlesen
cout << "Bitte geben sie ihren versuch ziffernweise ein(0<=w<=9)" << endl;
cin >> versuch[0]>> versuch[1]>> versuch [2];
// vergleich auf richtige position
r=0;
for (i=0;i<3;i++)
if(code[i]==versuch[i]) r++;cout<< "richtige position"<< r <<endl;
// vergleich auf falsche position
{
int t=0;for (i=0;i<3;i++)
if(code[i]==versuch[i]) t++;
cout<< "falsche Position"<< t <<endl;{
}
}
system("pause");
}[/cpp][cpp]
-

-
#include <math.h> #include <iostream> #include <time.h> using namespace std; int zufallszahl() { int w; w=ceil(rand()/32768.0*7+1); //zufall von 1 bis 8 return(w); } main() { int w; int i,r,t; int code[3]; int versuch[3]; int ziffer[9]={0,0,0,0,0,0,0,0,0}; srand (time(0)*1917); cout<<"Mastermind"<<endl; //zufallszahlen erzeugen for (i=0;i<3;i++) { w=zufallszahl(); while (ziffer[w]==1) { w=zufallszahl(); // cout << " w = " << w; // cout <<"ziffer " << ziffer[w] ; } // cout << " code = " << w << endl; code[i]=w; ziffer[w]=1; } cout << "code ="<<code[0]<<" "<<code[1]<<" "<<code[2]<<endl; //zahl vom nutzer einlesen cout << "Bitte geben sie ihren versuch ziffernweise ein(0<=w<=9)" << endl; cin >> versuch[0]>> versuch[1]>> versuch [2]; // vergleich auf richtige position r=0; for (i=0;i<3;i++) if(code[i]==versuch[i]) r++; cout<< "richtige position"<< r <<endl; // vergleich auf falsche position { int t=0; for (i=0;i<3;i++) if(code[i]==versuch[i]) t++; cout<< "falsche Position"<< t <<endl; { } } system("pause"); } [cpp][/cpp]
[cpp]
-
so das hat jetzt geklappt.... wir müssen mit dem dev cpp arbeiten weil das für uns anfänger anscheinend gut ist
-
Zeile 1:
<cmath>statt<math.h>
Zeile 3:<ctime>statt<time.h>
Zeilen 8 - 10 hätte man zusammenfassen können.
Zeile 12: C++ kennt kein Default-Int
Zeilen 14 - 17: In C++ definiert man Variablen so lokal wie möglich.
Zeile 18: Nutze Container der STD statt Arrays.Und das Array-Gewurstel lese ich nicht durch. Löse es mit
std::vector.
-
gbhjkrhb schrieb:
so das hat jetzt geklappt.... wir müssen mit dem dev cpp arbeiten weil das für uns anfänger anscheinend gut ist
Ihr Armen. Gleich am Anfang nur Mist lernen, den man dann nicht mehr los wird. (Ehrlich gesagt ist dein Code auch entsprechend schrecklich, wie EOutOfResources schon gleich zu Anfang gesagt hat). Schluck den Kurs, versuch eine gute Note zu bekommen und dann vergiss nach der Abschlussprüfung besser alles wieder.
-
ok danke werde es versuchen... das müsstest du mal unserem prof sagen der das so haben möchte hahahah
-
gbhjkrhb schrieb:
wir müssen mit dem dev cpp arbeiten weil das für uns anfänger anscheinend gut ist
Ich bemitleide euch, niemand sollte so etwas ertragen müssen

Edit:
oO zu langsam
-
dafür muss ich den kurs aber erstmal bestehen was leider nicht danach aussieht weil das alles nicht in mein kopf möchte
-
Die Frage ist nun: soll das Programm in C oder in C++ geschrieben werden? (in der Aufgabenstellung wird von C gesprochen).
Falls C++:
- schau dir mal find oder auch count an.
Du überprüfst einfach, ob eine eingebene Zahl überhaupt vorkommt.
Falls sie vorkommt, testest du noch ob sie an der richtigen Stelle eingegeben wurde und inkrementierst dann entsprechend entweder die Variable für die richtigen oder für die falschen Positionen.
-
in c++ müssen wir programmieren ok ich werde es versuchen.... sieht so aus als wird das ein sehr langer tag und nacht