我创建了一个矩阵。这个矩阵有随机字母 [a-z] 和 [A-Z]
harfGetir()
函数是创建随机字母。但我不希望这些字母重复。我该怎么做?我想对字母进行排序。
这是代码:我能做什么?
const int M = 5;
const int N = 10;
static const char harfler[] = // a-z arası büyük ve küçük harfleri tanımladığımız değişken.
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
int harfBoyut = sizeof(harfler) - 1;
char harfGetir() {
return harfler[rand() % harfBoyut];
}
int main()
{
int A[M][N];
srand(time(NULL)); // değerleri yeniden atamak için programı baştan aldı.
for (int i = 0; i < M; i++) // satır döngüsü
for (int j = 0; j < N; j++) // sütun döngüsü
{
A[i][j] = harfGetir(); // matris değerleri atama
}
cout << setw(5) << "Harf Matrisi" << endl;
cout << endl;
for (int i = 0; i < M; i++) // satırdaki harfler
{
for (int j = 0; j < N; j++) // sütundakı harfler
cout << setw(4) << harfGetir(); // harfleri çeken kod
cout << endl;
}
cout << endl;
system("pause");
return 0;
}
最佳答案
您可以创建一个随机排列(使用 random
header ,而不是旧的 srand
),然后在数组。
然后你可以再次对它们进行排序。
例如,如果字符串 v
中包含所有可用字母:
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(v.begin(), v.end(), g);
然后,如果您想要 10 个字母,则使用 v
的前 10 个条目。
关于c++ - 如何在 C++ 中对数组中的字母进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53223148/