ちょっと私の動的配列の内容をシャッフルしようとしているし、動作していない。 yallに助けやリンク/リソースがあれば私を助けることができますか?私はstd :: randomshuffleを使用しようとしていますが、私のテストは正しいデータの代わりに0を吐き出しています。動的配列の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に私の機能イムは、ループ条件としてistream::good()
またはistream::eof()
は絶対に使用しないでください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絶対に必要としないし、これを行うべきではありません。後でコードを効果的に設計する方法について考える必要があります。このシャッフル機能のポイントは、曲をシャッフルしてプリントアウトすることです。だから、私たちが必要とするのは、歌と数字だけです(それは「歌」と「ptr」ではない)も冗長です。 – stinky472