эй, ребята, я пытаюсь перетасовать содержимое моего динамического массива и его не работает. Им интересно, если yall получил какие-либо советы или ссылки/ресурсы, которые могут мне помочь. Я пытаюсь использовать std :: randomshuffle, но мой тест выплевывает 0s вместо правильных данных.C++ перетасовка содержимого динамического массива?
Songs *ptr;
ptr = new Songs[25];
ifstream fin;
fin.open("input.txt");
while (fin.good()) //my input
{
getline(fin, song[num].title);
getline(fin, song[num].artist);
fin >> song[num].mem;
num++;
fin>>ws;
}
fin.close();
и Heres моя функция им пытаются использовать randomshuffle
void shuffle (char choice, Songs song[], Songs *ptr, string title, string artist, int mem, int num)
{
if (choice == '4')
{
std::random_shuffle(ptr, ptr + num); //shuffle
}
for (int i = 0; i<num; i++) //test
{
cout << ptr[i].title << ptr[i].artist << ptr[i].mem << endl;
}
}
Почему все параметры в функция 'shuffle()'? Вы используете только 'ptr' и' num'. И логика, чтобы перетасовать или нет, не должна быть действительно сделана внутри функции перетасовки. – jrok
ну вот содержание моего массива ptr, поэтому я решил, что должен был включить их также – gamergirl22
@ gamergirl22 абсолютно не нужно и не должен этого делать. Позже вам нужно подумать о том, как эффективно проектировать код: точка этой функции тасования - это перетасовать песни и распечатать их. Итак, все, что нам нужно, это песни и num (не то, что «песня» и «ptr») также излишни. – stinky472