samedi 14 octobre 2017

random_shuffle() is not shuffling anything C++

I am learning C++ and the book I am using uses random.shufle() in the code for a simple High Scores Program, I am typing the code verbatim but it is not working... Whenever I run the program everything works except for the random_shuffle() portion. I have seeded it using srand(static_cast(time(0))); Here is the code:

//High Scores
//Demonstrates algorthms

#include <iostream>
#include <vector>
#include <algorithm>
#include <ctime>
#include <cstdlib>

using namespace std;

int main()
{
vector<int>::const_iterator iter;

cout<<"creating a list of scores.";
vector<int> scores;
scores.push_back(1500);
scores.push_back(3500);
scores.push_back(7500);

cout<<"\nHigh Scores:\n";
for (iter = scores.begin(); iter != scores.end(); ++iter)
{
    cout<<*iter<<endl;
}

cout<<"\nFinding a score.";
int score;
cout<<"\nEnter a score to find: ";
cin>>score;
iter = find(scores.begin(), scores.end(), score);
if (iter != scores.end())
{
    cout<<"Score found.\n";
}
else
{
    cout<<"Score not found\n";
}

cout<<"\nRandomizing scores.";
srand(static_cast<unsigned int>(time(0)));
random_shuffle(scores.begin(), scores.end());
cout<<"\nHigh Scores:\n";
for (iter = scores.begin(); iter != scores.end(); ++iter)
{
    cout<<*iter<<endl;
}

cout<<"\nSorting scores.";
sort(scores.begin(), scores.end());
cout<<"\nHigh Scores:\n";
for (iter = scores.begin(); iter != scores.end(); ++iter)
{
    cout<<*iter<<endl;
}
return 0;
}




Aucun commentaire:

Enregistrer un commentaire