Etwas komplizierter wird es hier: Es können im Vektor auch selbst zusammengeschriebene Strukturen stehen.
struct bezeichner
{
string wort;
char plusminus;
};
bezeichner b[10];//Dies ist der Vektor
b[0].wort = "AlleMenschen";
b[0].plusminus = '+';
Noch etwas komplizierter wird es hier: Es können im Vektor auch selbst zusammengeschriebene Objekte stehen! Ein objektorientiertes Beispiel folgt hier:
Bitte achte hier auf die beiden Konstruktoren und deren Aufrufe.
//mindcl.cpp Stand: 9. 1. 2016 mit einer Klasse
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const int RATEREIHE=4;
const int MAX=6;
class Mind
{
private:
int mi;
public:
Mind(){ }//Konstruktor 1
Mind(int mind){ mi=mind; }//Konstruktor 2
void print() { cout << mi; }
void get() { cin >> mi; }
bool isEqual(Mind m2)
{
return (mi==m2.mi)?true:false;
}
}; //class
int main()
{
Mind geraten[RATEREIHE];//Konstruktor 1 wird aufgerufen
Mind geheim[MAX] = {1,2,3,4,5,6};//Konstruktor 2 wird aufgerufen
cout << "Mastermind 4 von 6: 1 bis 6: Die 9 beendet das Spiel." << endl;
cout << "Blau=1, gelb=2, gruen=3, rot=4, braun=5, orange=6." << endl;
cout << "---------------------------------------------------------" << endl;
cout << "Bitte je 4 Ziffern eingeben: 1 Leertaste 2 Leertaste 5 Leertaste 6." << endl;
cout << endl;
system("pause");
srand(time(NULL));
//Mischen:
for (int k=0; k<MAX; k++)
{
int zufall = rand()%MAX;
Mind temp = geheim[k];
geheim[k] = geheim[zufall];
geheim[zufall] = temp;
}
//Tipps:
for (int z=1; /* Auslassung */ ; z++)
{
int schwarz=0;
cout << " Dein " << z << ". Tipp, bitte: ";
for (int y=0; y<RATEREIHE; y++)
{ geraten[y].get();
if (geraten[0].isEqual(9))//Konstruktor 2 wird aufgerufen
{
for (int v=0; v<RATEREIHE; v++) geheim[v].print();
cout << endl;
system("pause");
exit(0);
}
if (geraten[y].isEqual(geheim[y]))
schwarz++;
}//for y
cout <<
" " <<
schwarz << " Schwarze";
if (schwarz==1) cout << "r";
if (schwarz==4)
{
cout << endl << "Du hast es geschafft ..." << endl;
system("pause");
exit(0);
}
int weiss=0;
for (int x=0; x<3; x++)
{ if (geraten[x].isEqual(geheim[x+1])) weiss++;
if (geraten[x+1].isEqual(geheim[x])) weiss++;
}//for x
for (int w=0; w<2; w++)
{
if (geraten[w].isEqual(geheim[w+2])) weiss++;
if (geraten[w+2].isEqual(geheim[w])) weiss++;
}//for w
if (geraten[0].isEqual(geheim[3])) weiss++;
if (geraten[3].isEqual(geheim[0])) weiss++;
cout << ", " << weiss << " Weisse";
if (weiss==1) cout << "r";
cout << endl;
}//for z
}//main
Hier im nächsten Programm sind es Objekte und Funktionen, die diese Objekte in Variablen hineinschreiben.
//bibleclass.cpp ist fuer Dev-C++ geschrieben.
//Es mischt auch. (Verbesserte Fassung: 24.10.2013, 20.11.2013)
#include <iostream> //std::cout, cout
#include <cstdlib> //srand(time(NULL)),
#include <ctime> //rand
#include <conio.h> //getche(), getch()
using namespace std;
const int MAX=3; //int
//boolean
int gut;
int merker[MAX];
class bezeichner
{
private:
string worte;
string stelle;
char posneg;
public:
bezeichner() {}
void invers(string inputwert)
{
worte = inputwert;
}
void instelle(string inputst)
{
stelle=inputst;
}
void input(char in)
{ posneg=in; }
void zeigworte()
{
cout << worte;
}
void zeigstelle()
{
cout << " " << stelle;
}
int vergleich(int in)
{
return (in==posneg)?true:false;
}
};//class Ende
int main()
{
cout << "Bible-Quiz";
cout <<endl<< "----++----";
bezeichner b[MAX];
char ein;
//Zufall initialisieren:
srand(time(NULL));
b[0].invers("Wenn jemand nicht im Wort..");
b[0].instelle("Jak.1,3");
b[0].input('-');
b[1].invers("Das Wort ist wie ein zweischneidiges");
b[1].instelle("Hebr.4,12");
b[1].input('+');
b[2].invers("So sehr hat Gott die Welt geliebt");
b[2].instelle("Joh.3,16");
b[2].input('+');
//Mischen:
for (int i=0; i<MAX; i++)
{
int k=rand() % MAX;
bezeichner temp = b[i]; //Objekt b[i] speichern
b[i] = b[k]; //Tausch
b[k] = temp; //Tausch
}//for zum Mischen
//Entscheidung abfragen:
for (int j=0; j<MAX; j++)
{
do {
cout <<endl<< "Tippen Sie entweder PLUS oder MINUS + -!";
cout <<endl<< "Wie wuerden Sie entscheiden? > ",
b[j].zeigworte();
b[j].zeigstelle();
//Eingabe:
ein = getche();
if (b[j].vergleich(ein) == true) //(ein==b[j].posneg)
{
cout << " Richtig!";
merker[j] = true;
}//if richtig
else
{
cout << " Falsch, leider";
merker[j] = false;
}//else
} while ( ein !='+' && ein !='-' );
}//for j
//Zaehle die richtigen:
int zus=0;
for (int L=0; L<MAX; L++)
{
zus += merker[L];
}//for L
cout <<endl;
if (zus >2) cout <<endl<< "Exzellent ";
if (zus >1) cout << " gut geraten!";
else cout <<endl<< "Wertung eher nicht so gut.";
cout <<endl<< "-> Eine beliebige Taste druecken, bitte!";
getch();
return 0;
} //main()
Hier geht es weiter zu Beispiel >>