Supportnet / Forum / Anwendungen(Java,C++...)
c++ Mastermind
Frage
Hi, ich versuche gerade ein Mastermind Programm zu programmieren. Die Probleme, die aufgetaucht sind, und sich nicht lösen wollen sind, das er jedesmal motzt "getline undeclared (first use this funktion)" und es vergleicht meine Zahlenwerte nicht auf Zeile 105. Hoffe auf Baldige Hilfe. MFG
[code]
//Mastermind
#include <iostream>
#include <string>
#include <stdlib.h>
#include <time.h>
#include <fstream>
#include "main.h"
using namespace std;
ofstream output("output.txt", ios::out);
int main()
{
//Zufallszahl
srand((unsigned)time(NULL));
int iMenue = 0;
//Schlaufe/Programm läuft bis User Beendet/eine 2 eingibt
do
{
iMenue = Menue(iMenue);
switch(iMenue)
{
case 1:
Spiel();
break;
case 2:
break;
default:
cout << " " << endl;
cout << "Gibts nich!" << endl;
cout << " " << endl;
system ("pause");
break;
}
}while(iMenue != 2);
system("PAUSE");
return 0;
}
int Menue(int &iMenue)
{
//Willkommensmenue
system("cls");
cout << "+++++++++++++++++++++++++" << endl;
cout << "Willkommen bei Mastermind" << endl;
cout << "+++++++++++++++++++++++++" << endl;
cout << " " << endl;
cout << " " << endl;
cout << "duecken sie:" << endl;
cout << "1 fuer neues Spiel" << endl;
cout << "2 zum Beenden" << endl;
cin >> iMenue;
return iMenue;
}
int Spiel()
{
int iZufall[MAX_ZUZAHLEN];
Genzuzahl(&iZufall[MAX_ZUZAHLEN]); //Ermittlung Zufallszahlen
int iZahl[5];
int iRichtig = 0;
//Ausgabe des bereits gespielten, falls vorhanden
do
{
system("cls");
char zeile[50];
if(output.good())
{
while(output.good())
{
output.getline(zeile, 50);//Reklamiert bei .getline
cout << zeile << endl;
}
}
//Eingabe der Werte
cout << "Geben Sie ihre 1. Zahl ein" << endl;
cin >> iZahl[1];
cout << "Geben Sie ihre 2. Zahl ein" << endl;
cin >> iZahl[2];
cout << "Geben Sie ihre 3. Zahl ein" << endl;
cin >> iZahl[3];
cout << "Geben Sie ihre 4. Zahl ein" << endl;
cin >> iZahl[4];
cout << "Geben Sie ihre 5. Zahl ein" << endl;
cin >> iZahl[5];
//Vergleich Eingabe - Zufallszahlen
for(int x = 1; x < MAX_ZUZAHLEN+1;x++)
{
if(iZahl[x] == iZufall[x])
{
iRichtig = iRichtig+1;
}
}
//Schreiben in die Datei um das gespielte zu speichern
output << iZahl[1] << " " << iZahl[2] << " " << iZahl[3] << " " << iZahl[4] << " " << iZahl[5] << " " << "Richtig = " << iRichtig << endl;
}while(iRichtig!=5);//Alle Eingaben richtig beenden
cout << "Sie haben Gewonnen" << endl;
return 0;
}
int Genzuzahl(int iZufall[MAX_ZUZAHLEN])
{
//löschen die Zufallszahlen und erneutes ermitteln
for(int y = 0; y < MAX_ZUZAHLEN;y++)
{
iZufall[y] = 0;
}
for(int x = 0; x < MAX_ZUZAHLEN;x++)
{
iZufall[x] = (rand() % MAX_ZUZAHLEN)+1;
}
for(int z = 0; z < MAX_ZUZAHLEN;z++)
{
//cout << iZufall[z] << endl;
output << iZufall[z] << " ";
}
output << " " << endl;
system("PAUSE");
return iZufall[MAX_ZUZAHLEN];
}
[/code]
Antwort 1 von disco
moin
sorry falls ich mist erzähle, bin total raus aus c++.
aber deine methodenkopf
sieht schon komisch aus.
int Genzuzahl(int iZufall[[b]MAX_ZUZAHLEN])
du willst ein array empfangen und hast da noch die initialisierungslänge, ode was das sein soll drinn stehen. das versteh ich nicht.
und die methode rufste auch noch so auf:
int iZufall[MAX_ZUZAHLEN];
Genzuzahl(&iZufall[MAX_ZUZAHLEN]);
ich kann jetzt nur von java ausgehen, da ich wirklich nix mehr von c++ weiss, aber da kann sowas nich gehen.
du solltest dich nochmal mit arrays auseinandersetzen.
du musst das array mit einer gewisse nlänge initialisieren und dann einfach an die methoden übergeben. und nicht immerden initialisierungswert da reinschreiben. so übergibst du nicht das array sondern den wert, der an der position steht.
iZufall ist das array
iZufall[MAX_ZUZAHLEN] ist ein wert der an der position MAX_ZUZAHLEN des arrays steht.
g,
disco
PS:
das ist nur das erste was mir aufgefallen ist. den rest hab ich nicht angeguckt.
viel glück noch. jeder fängt mal an.
sorry falls ich mist erzähle, bin total raus aus c++.
aber deine methodenkopf
Zitat:
int Genzuzahl(int iZufall[MAX_ZUZAHLEN])
int Genzuzahl(int iZufall[MAX_ZUZAHLEN])
sieht schon komisch aus.
int Genzuzahl(int iZufall[[b]MAX_ZUZAHLEN])
du willst ein array empfangen und hast da noch die initialisierungslänge, ode was das sein soll drinn stehen. das versteh ich nicht.
und die methode rufste auch noch so auf:
int iZufall[MAX_ZUZAHLEN];
Genzuzahl(&iZufall[MAX_ZUZAHLEN]);
ich kann jetzt nur von java ausgehen, da ich wirklich nix mehr von c++ weiss, aber da kann sowas nich gehen.
du solltest dich nochmal mit arrays auseinandersetzen.
du musst das array mit einer gewisse nlänge initialisieren und dann einfach an die methoden übergeben. und nicht immerden initialisierungswert da reinschreiben. so übergibst du nicht das array sondern den wert, der an der position steht.
iZufall ist das array
iZufall[MAX_ZUZAHLEN] ist ein wert der an der position MAX_ZUZAHLEN des arrays steht.
g,
disco
PS:
das ist nur das erste was mir aufgefallen ist. den rest hab ich nicht angeguckt.
viel glück noch. jeder fängt mal an.
Antwort 2 von disco
da hatte sich nen eingeschlichen.
int Genzuzahl(int iZufall[MAX_ZUZAHLEN])
du willst ein array empfangen und hast da noch die initialisierungslänge, ode was das sein soll drinn stehen. das versteh ich nicht.
int Genzuzahl(int iZufall[MAX_ZUZAHLEN])
du willst ein array empfangen und hast da noch die initialisierungslänge, ode was das sein soll drinn stehen. das versteh ich nicht.
Antwort 3 von Das_Urmel
Mix der Includes - was soll das werden?
Welches C++ mag das sein?
tschö
Michael
Welches C++ mag das sein?
tschö
Michael

