Однократный, рандомизированный, двумерный массив символов, содержащий алфавит для начинающих на C ++ - PullRequest
0 голосов
/ 21 ноября 2018

Назначение хочет от нас создать матрицу 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;

    }

Я пытался сделать это;

char harf [ROWS] [COLUMNS];

для (int i = 0; i

{for (int j = 0; j

{

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

Я тоже пробовал то же самое с "||", но, похоже, не работает.

Поскольку это задание, я не могу использовать ничего более сложного, чем выражения такого рода.Может кто-нибудь сказать, пожалуйста, как поместить английский алфавит в эту матрицу?

1 Ответ

0 голосов
/ 22 ноября 2018
  1. Создать массив длиной 52.
  2. Заполните этот массив буквами алфавита, по желанию.[abcde.....XYZ]
  3. Перемешать весь массив.[dPYka....slqEr]
  4. Удалить последние два символа в массиве.[dPYka...slq]
  5. Теперь, чтобы получить доступ к вашим случайным буквам, просто прочитайте первый или последний символ в массиве и удаляйте его каждый раз, когда читаете один.[dPYka...slq] -> [dPYka...sl] (прочитайте 'q')
  6. Заполните ваш двумерный массив, получая доступ к одной букве за раз из этого массива, обязательно удаляя буквы по ходу.

Если вы сделаете это таким образом, удаленные случайные буквы будут чисто случайными (ха *), а окончательная матрица 5x10 также будет чисто случайной (ха *).

* давайте не будем получатьв свойствах действительно генераторов случайных чисел.

...