Team-Generator



  • Hallo 🙂
    Ich bin im 1. Ausbildungsjahr und habe das Fach, Anwendungsentwicklung. Mit diesem komme ich aber noch nicht so ganz zurecht, da ich einige Dinge nicht genau verstehe. Aus diesem Grund versuche ich gerade, mir mehr Wissen in C++ anzueignen.

    Ich möchte also ein Programm, als Übung für mich schreiben.

    Zum Programm:
    Ich möchte eine beliebige Anzahl von Namen eingeben, die mir dann am besten in 2 Teams durcheinander gewürfelt wieder ausgegeben werden. ich weiss aber nicht, wie ich mein Vorhaben realisieren kann.

    Ich wäre über Tips/Anregungen wirklich sehr dankbar!
    Eingelesen habe ich mich via Google natürlich schon und habe mir auch das Buch "Programmieren in C++: Einführung" zugelegt.

    Nichts destotrotz brauche ich einen Anstoß.

    #include "iostream"
    #include "conio.h"
    #include "iomanip"
    #include "string"

    using namespace std;

    int main()
    {

    cout << "--------------------------------------------------------------------------------";
    cout << " -> Team-Generator ver.1.0.0 Several-Clan Coded by eQualize87 <- ";
    cout << "--------------------------------------------------------------------------------\n\n";

    int anz;

    cout << "Bitte gib an, wieviele Spieler am Turnier teilnehmen werden: " << endl;
    cout << endl;
    cout << " -> Spieleranzahl: "; cin >> anz;
    cout << " -> " << anz << " " << "Slots reserviert!" << endl;
    cout << "------------------------" << endl;
    cout << endl;

    getch();
    }



  • Irgendwie solltest du die Namen eingeben, zwischenspeichern und durcheinander wieder ausgeben. Da wir deinen Kenntnisstand nicht kennen, zeig uns wie du eine Anzahl von Namen ablegen würdest?

    Wo gibst du die Namen ein 😕

    Zu optischen Darstellung in Foren nutze bei Quelltext die Codetags.
    Meist wird es dann bunt, bleibt formatiert und man kann es besser lesen.
    Wie? Quelltext markieren und auf C/C++ -Button hier unter dem Editierfeld drücken.

    cout << " -> Spieleranzahl: "; cin >> anz; // Besser und übersichtlicher in 2 Zeilen zeigen
    

    MfG f.-th.



  • Okay, der nächste Quellcode kommt übersichtlicher!

    Also die Namen eingeben, zwischenspeichern und wieder ausgeben verstehe ich.
    Ich weiss nur nicht wie ich das angehen kann.Ich habe keine Idee, wie ich sie ablegen müsste.

    Mein Problem ist, das ich nicht weiss, wie ich Namen eingeben kann, warscheinlich mit std::string, aber das verstehe ich noch nicht ganz.
    Ich kann Zahlen eingeben und Speichern, sowie ausgeben, nur das nützt mir ja nichts, weil ich Buchstabenketten brauche.

    Mein Kenntnisstand sieht so aus, das ich ganz grob weiss, das es if und else, do & while, arrays (statisch/dynamisch), pointer und zeiger gibt. Ich kann damit aber nicht umgehen!

    Mir müsste jemand sagen, "Hey, Du brauchst dafür ein Dynamisches Array und if& else abfragen", dann könnte ich geziehlt im Internet suchen, mich informieren und probieren.

    // So soll es aussehen:
    Wieviele Spieler spielen mit? <-Eingabe z.B. 6
    Dann müssten 6 Plätze für Namen reserviert werden, mit der Aufforderung diese nun einzugeben.
    Name1:
    Name2:
    Name3:
    Name4:
    Name5:
    Name6:

    Wenn die Namen eingegeben wurden, bestätige ich mit z.B. Enter und mir werden 6 Spielernamen in 2 zufällige Teams ausgegeben.

    Vielen Dank!

    Gruß,
    Steven



  • #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    
    void gibTeamAus(const vector<string> &team)
    {
    	for(int i = 0; i < team.size(); ++i)
    		cout << team[i] << '\n';
    }
    
    int main()
    {
    	vector<string> team1;
    	vector<string> team2;
    
    	cout << "Gib Spielernamen ein\n";
    
    	//Namen einlesen, Ende mit leerer Zeile (Einfach Enter drücken)
    	string name;
    
    	getline(cin, name);
    
    	while(name.size())
    	{
    		team1.push_back(name);   //Zuerst werden alle Spieler team1 zugeordnet
    		getline(cin, name);
    	}
    
    	random_shuffle(team1.begin(), team1.end()); //Die Spieler werden durcheinandergewürfelt
    
    	//Die zweite Hälfte von Team1 wird in Team2 gesteckt
    	for(int i = team1.size() / 2; i < team1.size(); ++i)
    		team2.push_back(team1[i]);
    
    	team1.resize(team1.size() / 2); //Die zweite Hälfte wird aus Team1 gelöscht
    
    	//Testausgabe
    	cout << "*** Team Eins besteht aus:\n";
    	gibTeamAus(team1);
    
    	cout << "\n\n*** Team Zwei besteht aus:\n";
    	gibTeamAus(team2);
    }
    


  • Entschuldigt, ich war bis eben noch in einem Meeting(Arbeit)

    Vielen Dank, genau so meinte ich das!

    An diesem Quellcode kann ich sehr gut sehen, wie ich arbeiten muss, vorallem weil ich genau weiss, was passieren soll. 👍

    Herzlichen Dank, für das Engagement, damit kann ich arbeiten.

    Gruß,
    Steven



  • Belli schrieb:

    for(int i = 0; i < team.size(); ++i)
    

    Wegen

    warning C4018: '<': Konflikt zwischen 'signed' und 'unsigned'
    

    sollte es eher heissen:

    for(size_t i = 0; i < team.size(); ++i)
    

Anmelden zum Antworten