C++-ban hogyan lehet kiíratni egy string tömb egy véletlenszerűen kiválasztott elemét?
Hogy működik a rand() függvény? Van egy mostmár egy int tömböm, 'halom[51]'. Úgy adogattam értéket az elemeknek, hogy pl. 'halom[0, 1, 2, 3] = 1' - így szabad?
Ki akarok íratni egy elemet, az 'cout << halom[rand()]'?
int tomb[]={4,7,11,54,33}
int pelda=rand()%5; //1-5 közötti generálás
cout<<tomb[pelda];
Ja bocs, így 0-4 között generál oda kell írni +1-et!
Tehát:
int tomb[5]={4,10,43,21,3};
int pel=rand()%5+1; //itt az 5 helyére annyit írj ahány elemű a tömb
cout<<tomb[pel];
"pl. 'halom[0, 1, 2, 3] = 1' - így szabad?"
Na ácsi. Szabad, de csak a halom[3] lesz 1, a többivel semmit sem csinál, mert a vessző operátor miatt az utolsó értékre értékelődik ki.
De ez elég rossz dolog, hogy random operátorokat random dolgokra használsz, hogy "hátha vesszővel elválasztva jó lesz", ha nem tudod, mit csinál, ne használd. Először nézd meg a neten, mert _biztosan_ megtalálod a választ.
Aham.. C++-ban a tömbök indexelése 0-tól kezdődik, ez nem Pascal.
#include <iostream>
#include <string>
#include <ctime>
int main()
{
//random seed
srand(time(NULL));
//a tömbünk
const std::string gyumolcsok[] = {"alma", "korte", "eper"};
//a tömbünk mérete
size_t gyumolcsok_szama = sizeof(gyumolcsok)/sizeof(*gyumolcsok);
//random elem kiírása
std::cout << gyumolcsok[rand() % gyumolcsok_szama] << std::endl;
return 0;
}
int RandInt(const int min, const int max)
{
static std::mt19937 engine{std::random_device{}()};
using uidist = std::uniform_int_distribution<int>;
static uidist uid{};
return uid(engine, uidist::param_type{min, max});
}
int main()
{
auto RandFrom = [](const auto& container)
{
auto it = std::begin(container);
std::advance(it, RandInt(0, std::size(container) - 1));
return *it;
};
const auto fruits = std::array<std::string, 3>{"alma", "korte", "eper"};
std::cout << RandFrom(fruits) << '\n';
std::cin.get();
}
...ezeket elnézve jó, hogy nem láttátok a program többi részét :D...
Hát... nem ragaszkodom én a rand()-hoz, csak elhatároztam, hogy írok egy kártyázó programot, de úgylátszik, már az osztással is bajok vannak :/
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!