非重复、随机、2D字符数组,包含C++初学者的字母表



Assignment希望我们创建一个矩阵5x10,该矩阵随机且非递归地包含英文字母。但由于矩阵中有52封信和50个房间,我不得不把它们收起来。但如果我能随机生成它们,我仍然会丢失两个字母,但不是同一个。

到目前为止,我的代码是这样的;

#include <iostream>
#include <ctime> //for srand (number randomize)
using namespace std;
int main()
{
srand(time(0)); // generates random number 
const int ROWS = 5; //declaration of rows
const int COLUMNS = 10; //declaration of columns
//writing content of the matrix
//I took out two letter (v and V) because matrix limit was 50 but all letters were 52
char harf[ROWS][COLUMNS] = {
{'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'},
{'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T'},
{'U', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e'},
{'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o'},
{'p', 'q', 'r', 's', 't', 'u', 'w', 'x', 'y', 'z'}
};

for (int i = 0; i < ROWS; i++)
{
for (int j = 0; j < COLUMNS; ++j)
{
//generates a random index number
int index1 = rand() % 5; //random numbers 0 to 5
int index2 = rand() % 10; //random numbers 0 to 10

//swaps harf [i][j] with harf [index1][index2] for it won't be repating itself
char temp = harf[i][j];
harf[i][j] = harf[index1][index2];
harf[index1][index2] = temp;
}
}
//printing header and random order matrix
cout << "Random and nonrecurring matrix" << endl << endl;
for (int i = 0; i < ROWS; ++i)
{
for (int j = 0; j < COLUMNS; ++j)
cout << harf[i][j] << "     ";
cout << endl << endl;
}

我试着走这条路;

字符harf〔ROWS〕〔COLUMNS〕;

对于(int i=0;i<ROWS;i++(

{对于(int j=0;j<COLUMNS;++j(

harf[i][j] = rand() % 25 + 65 && rand() % 25 + 97;      } }

我也尝试过用"||"做同样的事情,但似乎不起作用。

由于这是一项任务,我不能使用比这种表达式更高级的东西。有人能告诉我如何把英语字母表代入那个矩阵吗?

  1. 创建长度为52的数组
  2. 用字母表中的字母填充这个数组,如果你愿意的话,按顺序排列。[abcde.....XYZ]
  3. 打乱整个阵列。[dPYka....slqEr]
  4. 删除数组中的最后两个字符。[dPYka...slq]
  5. 现在,要访问随机字母,只需读取数组中的第一个或最后一个字符,并在每次读取一个字符时将其删除。[dPYka...slq]->[dPYka...sl](读取'q'(
  6. 通过一次访问此数组中的一个字母来填充二维数组,确保在执行过程中删除字母

如果你这样做,删除的随机字母将是纯随机的(ha*(,最终的5x10矩阵也将是纯随意的(ha*(。

*让我们不要讨论真正的随机数生成器的性质。

最新更新