c++ - 如何在 C++ 中对数组中的字母进行排序?
问题描述
我创建了一个矩阵。这个矩阵有随机字母 [az] 和 [AZ]
该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
标题,而不是旧的srand
),然后获取n
数组中的条目。
然后你可以再次对它们进行排序。
例如,如果您在一个字符串中有所有可用的字母v
:
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(v.begin(), v.end(), g);
然后,如果您想要 10 个字母,则使用 的前 10 个条目v
。
推荐阅读
- php - 使用 php 遍历目录并将文件添加到多个 zip
- java - Android ...我的应用程序没有启动?
- python - 将字典添加到字典中元组列表的末尾
- polling - 加特林的长轮询
- angular - 我们如何将 Blockly 导入 Angular 7 应用程序?
- git - Windows 10 Git 推送说一切都是最新的,但没有进行更改
- python - 在 Bokeh 中使用 HoverTool 嵌入具有相对路径的本地图像
- ruby-on-rails - 如何删除现有 Rails 项目中的所有测试模块?
- ios - if Condition 在执行 segue 之前为 True
- amazon-web-services - AWS S3 存储桶仅上传所有 zip 文件