首页 > 解决方案 > 如何在 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;
}

标签: c++arrayssortingmatrix

解决方案


您可以创建一个随机排列(使用random标题,而不是旧的srand),然后获取n数组中的条目。

然后你可以再次对它们进行排序。

例如,如果您在一个字符串中有所有可用的字母v

std::random_device rd;
std::mt19937 g(rd());

std::shuffle(v.begin(), v.end(), g);

然后,如果您想要 10 个字母,则使用 的前 10 个条目v


推荐阅读