Supportnet / Forum / Anwendungen(Java,C++...)
Kann mir jemand bitte diesen Programmteil erklären
Frage
Hallo,
ich muß nächste Woche in der Schule ein Programm beschreiben, es geht dabei um das Spiel Fußballtoto, bei diesem Programmausschnitt geht es um die zufällige Auswahl der Spielbegegnungen, sie werden vorher aus einer Textdatei eingelesen und dann,zusammen gestellt. (Wie?)
Währe nett wenn mir jemand diese paar Zeilen hier erklären könnte, ich hab an die Zeilen die ich nicht verstehe einfach ein Fragezeichen hingemacht:
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <ctime>
int main(){
std::vector<std::string> Vereine,Spiele; ?
std::vector<std::string>::iterator x; ?
std::ifstream dat_ein;
std::string y,dateiname = ("Vereine.txt"); ?
std::string tmp; ?
int i;
srand(time(NULL));
dat_ein.open(dateiname.c_str(),std::ios_base::in);
if(!dat_ein){
std::cout <<"Datei konnte nicht geoeffnet
werden"<<std::endl;
return -1;
}
while(!dat_ein.eof()){
dat_ein >> tmp; ?
Vereine.push_back(tmp); ?
}
while(Vereine.size()){ ?
x= Vereine.begin()+rand()%Vereine.size(); ?
Spiele.push_back(*x); ?
Vereine.erase(x); ?
}
for(i=0;i<Spiele.size();i+=2) ?
std::cout <<"\n\nSpiel "<< i/2+1 <<": "<< Spiele[ i ]<<" gegen "<<Spiele[i+1]<<std::endl; ?
Ich hoffe das mir jemand helfen kann...
Nina
Antwort 1 von semi
std::vector<std::string> Vereine,Spiele; ? // zwei Vektore für Strings
std::vector<std::string>::iterator x; ? // Iterator für einen String-Vektor
std::string y,dateiname = ("Vereine.txt"); // zwei Strings, davon dateiname mit
// "Vereine.txt" initialisiert
std::string tmp; ? // Noch ein String für das lesen aus der Datei
while(!dat_ein.eof()) { // Solange Ende der Datei nicht erreicht
dat_ein >> tmp; ? // String nach tmp einlesen (Position in Datei wird )
Vereine.push_back(tmp); ? // und ans Ende des Vektors Vereine anhängen
}
while(Vereine.size()){ ? // Solange noch etwas in Vektor Vereine drin ist
x= Vereine.begin()+rand()%Vereine.size(); ?
// Vereine.begin()+rand() // Anfangsposition + zufällig paar Positionen weiter
// % Vereine.size(); ? // (Modulo Vektorgrösse, um sicher zu stellen, dass der "Zeiger" auf
// ein existierendes Element zeigt)
Spiele.push_back(*x); ? // Zufällig ermittelten Verein ans Ende des Vektors Spiele anhängen
Vereine.erase(x); ? // und auch aus Vektor Vereine entfernen
}
for(i=0;i<Spiele.size();i+=2) ? // Von Anfang bis Ende des Vektors Spiele iterieren
// (jeweils zwei Positionen weiter lesen; i=0,2,4,... usw.)
std::cout <<"\n\nSpiel "<< i/2+1 <<": "<< Spiele[ i ]<<" gegen "<<Spiele[i+1]<<std::endl; ?
i=0; i/2+1 = 1; Spiele[ i ] <=> Spiele[ 0 ]; Spiele[i+1] <=> Spiele[1]
i=2; i/2+1 = 2; Spiele[ i ] <=> Spiele[ 2 ]; Spiele[i+1] <=> Spiele[3]
i=4; i/2+1 = 3; Spiele[ i ] <=> Spiele[ 4 ]; Spiele[i+1] <=> Spiele[5]
usw.
Habt Ihr das in der Schule auch alles behandelt?
Was hier alles zum Einsatz kommt ist für Anfänger sicherlich kaum nachvollziehbar.
Da sind Templates, Operator-Überladung, Iterator als Pointer auf Vektorelemente usw.
Gruß,
Michael

