[Gelöst]Eingabe speichern
-
Hi.
Ich könnte mich nun dumm stellen und dir sagen, du sollst gefälligst genauere Angaben machen.
Allerdings habe ich schon ein paar andere Beiträge von dir mitbekommen und ich denke, ich weiss was du meinst.
Mach einenstd::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 mitstd::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.PS: Erinnert mich irgendwie an den Thread mit der Lottoziehung, in welchem ich mal geantwortet habe.
-
/sign SeppJ
-
Noch ein kleiner Tipp: Falls dein Compiler dir sagt, dass es keinen Member Namens
shufflevom Namensraumstdgibt, nimm stattdessenrandom_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 verstandenund 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 mitstd::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.
-
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;
-
...