Új hozzászólás Aktív témák

  • EQMontoya

    veterán

    válasz sztanozs #3006 üzenetére

    Valami init kellene annak a randomnak, hogy ne ugyanaz potyogjon belőle mindig.
    Amúgy jól elbonyolítottad Te is. :)
    Erre való a map.
    Ugye map<int, int>, aztán index operátorral rányomulsz. Mivel van defualt initializaiton a value-ra, ha nem létezett az adott key, és ezt intnél pont 0, ezért nyugodtan lehet indexelni. Másrészt kulcs szerint rendezett, tehát az első elemre, amelyiknél nem 0 a value, megvan a legkisebb generált érték.

    Valahogy így:

    map<int,int> results;
    int num_of_even=0;
    srand (time(NULL));
    for(int i=0; i<11; results[rand() % 11]++,++i);
    for(int i=0; i<11; num_of_even += results[i], i+=2);
    auto it = find_if(results.begin(), results.end(), [] (const std::pair<int, int>& v) { return v.second > 0; } );

    És kész is. *kezét összecsapja smiley*

    Nyilván a dolog még egyszerűbb amúgy, mert a minimum simán results.begin()-ben van a feltöltés után, de jól esett megírni egy lambdát. :)

Új hozzászólás Aktív témák