[Gelöst]Eingabe speichern



  • Noch ein kleiner Tipp: Falls dein Compiler dir sagt, dass es keinen Member Namens shuffle vom Namensraum std gibt, nimm stattdessen random_shuffle .

    SeppJ schrieb:

    Variable = Wert;
    

    Hexerei! 😮



  • Danke,
    ich muss mir das nochmal durchlesen(bei google) wie das genau geht, aber danke für den Denkanstoß ^^



  • ...



  • @Swordfish: Mit std::make_pair wird der Code nochmals ein wenig einfacher 🙂



  • ...



  • Jetzt versteh ich gar nichts mehr...
    Gibt es dafür nicht eine einfachere Lösung ?



  • Hast du auch die Beiträge durchgelesen in denen kein Code steht? Es kommt mir einfach so vor als würdest du dir am liebsten die Arbeit machen lassen...



  • ...



  • Das Problem ist, das bringt mir ja nichts übungs Aufgaben zu machen, wenn ich das nichtmal verstehe.
    Einen Code zu sehen, diesen zu lesen und zu erwarten das man daraus Aufgaben machen kann.... wie denn ?!



  • Und ich hab auch ein C++ buch gelesen die grundlagen in c und c++ kann ich, habe aber bis jetzt noch nie was von
    "vec.push_back( std::make_pair( ch, number ) );"
    oder die anderen Sachen die dort stehen gehört



  • meinhana schrieb:

    Das Problem ist, das bringt mir ja nichts übungs Aufgaben zu machen, wenn ich das nichtmal verstehe.

    Deswegen wird in guten Lehrbüchern auch erst etwas erklärt, bevor zu diesem Thema Übungsaufgaben gestellt werden.



  • ...



  • Irgendwie werde ich hier nicht ernst genommen...
    Es kann nicht sein, das ich ein Forum für c++ schreibe, dort um Hilfe bitte, da ich vermute das es hier Menschen gibt die mir das erklären können, was ich brauche, ich erwarte keine Lösungen von euch und ich will meine Aufgaben auch selber schaffen -> learning by doing -> aber das versteht ihr nicht so ganz 👎
    Ich habe bei google schon mehre Lösungen gesehen, aber diese nicht verstanden

    und das mit "gibt es keine einfachere Lösung" war so gemeint - OB man es auch nur mit den Basics schaffen kann

    Ich schreib C++ jetzt seid nichtmal 2 Monaten und fang gerade an pointer zu verstehen und ihr erwartet das man alles versteht was ihr schreibt...

    Btw. "Schiffe versenken" mach ich alleine für mich! Keine Schul aufgabe oder etc.

    Aber trotzdem Danke für die sehr tollen und hilfreichen Antworten! -.-*



  • Dann erklär mir was dir an meinem ersten Post nicht gepasst hat:

    MarcoYolo schrieb:

    Mach einen std::vector<unsigned> mit allen möglichen Zielen die der Computer treffen kann (wobei die Grösse natürlich der Anzahl der Felder entspricht). Den kannst du mit einer einfach Schleife auffüllen. Den mischst du durch mit std::shuffle . Du ziehst immer das letzte Element, das ist dann dein zufälliges Ziel. Du entfernst es gleich aus dem Vektor damit es nicht nochmals gezogen werden kann. Wenn der Vektor leer ist, hast du alle Ziele schon ein Mal genutzt.

    Hättest du meinen Beitrag umgesetzt, hättest du die Lösung längst schon. Aber im Gegenteil, du bist nicht einmal darauf eingegangen.


  • Mod

    meinhana schrieb:

    Irgendwie werde ich hier nicht ernst genommen...

    Die Gründe dafür wurden dir bereits sehr oft erklärt. Wenn allen anderen geholfen wird, nur dir nicht, dann darfst du dir mal selber denken, was wohl die Ursache ist.

    Siehe auch:
    http://www.c-plusplus.net/forum/p2299890#2299890
    http://www.c-plusplus.net/forum/p2296439#2296439
    http://www.c-plusplus.net/forum/p2299859#2299859
    http://www.c-plusplus.net/forum/p2290517#2290517
    http://www.c-plusplus.net/forum/p2289501#2289501
    http://www.c-plusplus.net/forum/p2289531#2289531
    http://www.c-plusplus.net/forum/p2287133#2287133
    http://www.c-plusplus.net/forum/p2287136#2287136
    In jedem deiner Threads kamen überwiegend Antworten dieser Art. Die hast du allesamt nicht zur Kenntnis genommen und stattdessen suchst du nun die Schuld bei den doofen freiwilligen Helfern, die dir nicht helfen möchten.

    Manchen Leuten ist eben nicht zu helfen.



  • Ich hab mir diesen "Vector" angeguckt....
    Der erste Vorschlag auf Google

    #include <vector>
    
    int main()
    {
        std::vector<int> v;
        int i;
    
        for (i=0; i<100; ++i) {
            v.push_back(i); // Fügt i ans Ende von v an.
            ++v[i]; // v[i] muss bereits existieren.
        }
    }
    

    Soweit verstanden, aber das funktioniert doch nicht mit einem zweidimensionalen Array ? Oder kann ich einfach nachdem er den randomschuss gesetzt hat
    letzerSchuss.push_back(feld[zeile][spalte].inhalt);
    😕



  • meinhana schrieb:

    Soweit verstanden, aber das funktioniert doch nicht mit einem zweidimensionalen Array ? Oder kann ich einfach nachdem er den randomschuss gesetzt hat
    letzerSchuss.push_back(feld[zeile][spalte].inhalt);
    😕

    und genau das ist dein Problem: Was für ein Schuss? Warum ist "letzterSchuss" ein vector? Was steht in "feld"? Für die Leser ist es ungemein nervig, dir jeden Mist aus der Nase zu ziehen. Und wenn du dann auch noch die Antwort verweigerst und dich stattdessen aufregst, dass du keine brauchbaren Antworten bekommst, dann wird dir irgendwann niemand mehr antworten - weil es einfach sinnlos ist.

    ein std::vector ist generisch. Er kann beliebige Typen enthalten:

    std::vector<int> intVec;
    std::vector<std::string> stringVec;
    std::vector<MyClass> myClassVec;
    std::vector<MyClass*> myClassPointerVec;
    


  • ...



  • Natürlich fehlen mir die meisten Sachen, ich bring mir das auch selber bei... und mach das erst seit 2 Monaten

    Zur Aufklärung
    -> Ich will Schiffe versenken programmieren
    -> Ein feld[zeile][spalte] ist das Spielfeld 10x10(Array)
    -> der Inhalt des Feldes ist von "A0" - "A9" & "j0" bis "J9"
    -> Der "letzeSchuss" ist der feldinhalt den ich haben will, wohin der Computer(random) geschossen hat
    -> dieser soll gespeichert werden und das nächste mal aussortiert werden

    Und deswegen frag ich mich ob es geht

    letzerSchuss.push_back(feld[zeile][spalte]);



  • meinhana schrieb:

    Soweit verstanden, aber das funktioniert doch nicht mit einem zweidimensionalen Array ?

    Nur weil das Spielfeld zweidimensional ist, ist die Aufzählung der Spielfelder dies nicht auch...

    Kurze Analyse:

    meinhana schrieb:

    v.push_back(i); // Fügt i ans Ende von v an.
    

    Da steht ja, dass man mit std::vector::push_back() ein Element an's Ende des Vektors stellt.

    meinhana schrieb:

    Oder kann ich einfach nachdem er den randomschuss gesetzt hat
    letzerSchuss.push_back(feld[zeile][spalte].inhalt);
    😕

    Hier steht, du würdest nach jedem Spielzug vom Computer std::vector::push_back() aufrufen.

    Und hier ist meine Aussage von vorhin:

    MarcoYolo schrieb:

    Du ziehst immer das letzte Element, das ist dann dein zufälliges Ziel. Du entfernst es gleich aus dem Vektor damit es nicht nochmals gezogen werden kann.

    Würde mich interessieren, wo genau ich geschrieben habe, dass du bei jedem Durchgang ein Element zum Vektor hinzufügen sollst.

    Meine Vermutung: Du hast meinen Beitrag nur überflogen und das Stichwort Vektor schnell mal gegoogled.


Anmelden zum Antworten