Генератор случайных строк не редактирует мой массив строк (C ++) - PullRequest
0 голосов
/ 27 марта 2019

Моя функция рандомизации строк выводит пустые строки.

Я уже видел, что ввод его вручную работает отлично, я пытался использовать указатели, но он только дает мне сообщения об ошибках.


void random(string Arr[], int ArrSize){
    for(int i = 0; i < ArrSize; i++){
        int StrSize = rand() % 8 + 3;
        for(int j = 0; j < StrSize; j++){
           (Arr[i])[j] = rand() % 74 + 48;
        }
    }
}



int main(){
    int ArrSize;
    cout << "Input string array length: \n";
    cin >> ArrSize;
    string StringArr[ArrSize];
    random(StringArr, ArrSize);
    lexCombSort(StringArr, ArrSize);
    for(int i = 0; i < ArrSize; i++) cout << StringArr[i] << " \n";

    return 0;
}

Я хотел, чтобы код выводил массив строк (и сортировал его в другой функции), но он ничего не выводил.

Ответы [ 2 ]

2 голосов
/ 27 марта 2019

Вы должны добавлять символы в строки, а не пытаться их переопределить:

Arr[i].push_back (rand() % 74 + 48);

вместо

(Arr[i])[j] = rand() % 74 + 48;
0 голосов
/ 27 марта 2019

Наиболее эффективным, особенно для более длинных строк, может быть:

void random(string Arr[], int ArrSize){
    for(int i = 0; i < ArrSize; i++){
        int StrSize = rand() % 8 + 3;
        Arr [i].append (StrSize, 0);
        for(int j = 0; j < StrSize; j++){
           (Arr[i])[j] = rand() % 74 + 48;
        }
    }
}

, поскольку он позволяет избежать потенциальных многократных выделений в push_back.

Live demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...