February 9, 2006
#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <cstdlib>
#include <algorithm>
using namespace std;
int main()
{
srand(time(0));
vector<string> namn;
namn.push_back (string ("olle"));
namn.push_back (string ("fredrik"));
namn.push_back (string ("frida"));
namn.push_back (string ("sara"));
random_shuffle(namn.begin(), namn.end());
for (int i = 0; i < 4; i++)
cout<<namn[i]<< endl;
system("pause");
return 0;
}
Så ser min kod ut, men när jag startar programmet, så kommer det upp dubletter av namnen.
T.ex. 2 st frida. Hur får jag bort dom ?[/code]
October 10, 2002
har nästan glömmt bort all c++, men om du kör en ifsats som kollar vilka värden som blev randomiserade, alltså en if sats som kollar om tex frida redan har randomiserats fram och isåfall skall random funktionen köras igen tills det inte finns någon dublett,
kanske krångligt skrivet men hoppas du fattar idén 😀
July 18, 2001
förstår inte koden till 100%, men jag antar att du vill få namnen i slumpmässig ordning.
jag skulle ha gjort såhär:
(inte skrivit c++ på ett tag nu till assemblys favör så det blir en del pseudokod...)
skapa en vanlig array med namnen. (vet inte hur den där vector grejjen funkar..)
for(int i=0; i<antal_namn; i++){
slump = slumpt tal mellan 0 och antal_namn-i
ta namnet på den positionen i arrayen och gör nått med
flytta arrayen from 'slump' och framåt ett steg inåt
}
så ska det slumpas fram namn bland de som tidigare inte slumpats fram. området i arrayen där det slumpas mellan krymper för varje varv i loopen, men storleken på arrayen får va den samma, blir för mkt bök annars.
Lycka till!
2 Guest(s)