как создать цикл, который проверяет каждую итерацию и запускает ее в начале после каждой итерации - PullRequest
0 голосов
/ 19 октября 2019

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

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

    void NumLoop(string& s) {

int pos = s.find_first_of(' ');

while (s.length() < myLength) {

    for (int pos; pos != string::npos; pos = s.find(' ', pos + 1)) {

        int choice = rand() % 2;

        if (choice = 1) {
            s.insert(pos + 1, " ");

                break;

        }
        if (choice = 0) {

            break;
        }
    }
}
cout << s;
system("pause");

}

Я хотел бы, чтобы программа случайным образом выбирала пробелы между словами, а затем увеличивала размер строки до тех пор, пока не достигнет желаемой длины s.

1 Ответ

0 голосов
/ 19 октября 2019

Прежде всего, это pos:

int pos = s.find_first_of(' ');

скрывается этим pos в области действия вашего for цикла:

for (int pos; pos != string::npos; pos = s.find(' ', pos + 1)) {

, поэтому избавьтесь отпервый и объедините два, как в этом цикле:

for (int pos = s.find_first_of(' '); pos != string::npos; pos = s.find(' ', pos + 1)) {

затем, измените ваши break s (которые выходят из цикла for, заканчивая его) на continue s, которые переходят кконец цикла и, следовательно, продолжить.

Я думаю, что есть другие проблемы, но это поможет вам начать в правильном направлении.

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