Supportnet Computer
Planet of Tech

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: