Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Zufallspaarungen aus einem Array

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
07.04.2004, 11:13 Uhr
~Ralf_79
Gast


Hallo,

kann mir jemand sagen wie ich aus einem Array per Zufallsfunktion ewas herrauslesen kann. Ich habe zum Beispiel ein Array der heisst Freunde[18] und aus diesen 18 Leuten möchte ich immer zwei zufällig herrausgewählt haben, die dann gegeneinander antreten sollen, zum Beispiel bei einem Spiel.
Hier habt Ihr mal Quode den ich angefangen habe:


C++:
#include <iostream>
#include <string>
#include <fstream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main()

{

std::string freunde[4];

Verein[0] = "Micha";
Verein[1] = "Ralf";
Verein[2] = "Stefan";
Verein[3] = "Bernd";

ifstream dat_ein;
string dateiname = Freunde[4];
dat_ein.open(dateiname.c_str(). ios_base::in);

srand ((unsigned)time (NULL));
string Spieler1;

for (int i = 0; i < 4; i++)    

Spieler1 = rand()% 4 + 1;


std::cout <<"Spiel 1 " <<  ": " << Spieler1 << std::endl;




return 0;


}//main



bis jetzt hab ich erst mit einem Zufallsspieler ausprobiert, was auch noch nicht funktioniert hat, vieleicht hat jemand eine Ahnung wie ich so gleich zwei Spieler zufällig auswählen kann.
Bin für jede Hilfe dankbar,

RAlf


Bearbeitung von typecast:
cpp-Tags korriegiert

Dieser Post wurde am 07.04.2004 um 12:49 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.04.2004, 12:23 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


wie wärs wenn du einfach ein zweites mal rand aufrufst, musst das nur so lagen tun bis die zahl die dabei herauskommt ne andere ist als bei deinem ersten spieler
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.04.2004, 12:39 Uhr
~Ralf_79
Gast


Das Problem ist, dass ich es ersteinmal mit einem Namen versucht habe, was ja auch nicht so recht geklappt hat, ich weis auch gar nicht ob man da überhaupt so vorgeht, oder ob ich den Array irgendwie anders einlesen muss.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.04.2004, 12:46 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


machs am besten so...
lies die spieler alle aus der datei in ein array oder einen std::vector ein...
danach rufst du einfach zweimal rand()%arraygösse auf und wählst die spieler die an dieser postition des arrays stehen...
fertig
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.04.2004, 13:22 Uhr
~Ralf_79
Gast


Habs jetzt noch mal so probiert wie du es vorgeschlagen hast, ich häng trotzdem noch fest, er gibt irgenwie nicht richriges raus, könntest Du noch mal drüberschauen


C++:
#include <iostream>
#include <string>
#include <fstream>
#include <ctime>
#include <cstdlib>

using namespace std;

int main()

{

ifstream dat_ein;
string dateiname = ("Freunde.txt");

dat_ein.open(dateiname.c_str(), ios_base::in);

if(!dat_ein)
{
    cout <<"Datei konnte nicht geoeffnet werden"<<endl;
    return -1;
}

string Freunde[4];

dat_ein >> Freunde[i];

srand (time (NULL));

string Spieler1;
int i;

for (i=0,i<4;++i)

Spieler1=rand() % 4 +1;


std::cout <<"Spieler1 heisst: " <<  ": " <<Spieler1[i] << std::endl;

return 0;

}





oder lese ich die Datei falsch ein?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.04.2004, 13:38 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


du willst irgendwas in array[ i ] einelsen ohne das i einen definierten wert hat das geht natürlich nicht

probier mal so
vorsicht nur ins forum gehackt nicht getestet sollte aber hoffentlich laufen von vielleicht ein paar vergessenen semikoli abgesehen

C++:
#include <iostream>
#include <vector>
#include <fstream>
#include <string>
#include <ctime>

int main(){

std::vector<std::string> freunde;
std::ifstream dat_ein;
std::string dateiname = ("Freunde.txt");
std::string tmp;
int sp1,sp2;

srand (time (NULL));

dat_ein.open(dateiname.c_str(), std::ios_base::in);
if(dat_ein.fail()){std::cout <<"Datei konnte nicht geoeffnet werden"<<std::endl;return -1;}

while(!dat_ein.eof()){
    dat_ein >> tmp;
    freunde.push_back(tmp);
}

sp2=sp1=rand()%freunde.size();
while(sp2==sp1)sp2=rand()%freunde.size();
std::cout <<"Spieler1 heisst: " <<  ": " <<freunde[sp1] << std::endl;
std::cout <<"Spieler2 heisst: " <<  ": " <<freunde[sp2] << std::endl;
}



in der freunde.txt steht dann z.b.

C++:
virtual    Windalf    (un)wissender    kronos




Bearbeitung von typecast:
ich war mal so frei und hab die Kursivschrift abgestellt

--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 07.04.2004 um 13:49 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
07.04.2004, 14:03 Uhr
~Ralf_79
Gast


sind zwar noch ein paar Warnmeldungen drin, aber ich kann damit jetzt endlich weiterarbeiten, danke das Du mir geholfen hast

Ralf
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: