Как можно программно исключить определенную итерацию из цикла for?

Как можно внести изменения в цикл, если при вводе новых слов пользователь случайно вводит уже существующее слово из вектора, чтобы продолжать работать с этим словом, но при этом не терять текущее значение счетчика цикла?
  • 4 февраля 2024 г. 6:18
Ответы на вопрос 2
Чтобы исключить определенную итерацию из цикла `for`, можно использовать оператор `continue`. Оператор `continue` прерывает выполнение текущей итерации и пропускает оставшийся код в итерации, сразу переходя к следующему шагу цикла.

Вот пример использования `continue` для исключения определенной итерации в цикле:

```cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main() {
    vector<string> words = {"apple", "banana", "cherry"};
    string newWord;
    
    for (int i = 0; i < 3; i++) {
        cout << "Введите новое слово: ";
        cin >> newWord;
        
        // Проверка на наличие слова в векторе.
        bool exists = false;
        for (const string& word : words) {
            if (newWord == word) {
                cout << "Слово уже существует. Введите другое слово." << endl;
                exists = true;
                break;
            }
        }

        // Если слово уже существует, пропускаем итерацию.
        if (exists) {
            i--; // Откатываем счетчик на один, чтобы не потерять итерацию.
            continue;
        }
        
        // Добавляем слово в вектор, если его там не было.
        words.push_back(newWord);
    }

    // Вывод всех слов в векторе.
    for (const string& word : words) {
        cout << word << " ";
    }
    
    return 0;
}
```

В этом примере мы читаем новое слово от пользователя и проверяем, существует ли оно уже в векторе. Если слово существует, мы выводим сообщение и с помощью `continue` пропускаем оставшуюся часть итерации, чтобы запросить слово заново. Чтобы сохранить текущее значение счетчика при обнаружении совпадения, мы уменьшаем счетчик `i` на единицу перед вызовом `continue`.

Обратите внимание, что вмешательство в управление счетчиком цикла вручную должно быть совершено осторожно, так как это может привести к неожиданным ошибкам или бесконечным циклам. Следует тщательно убедиться, что логика контроля за значением счетчика корректна и соответствует вашим намерениям.
в твоем случае просто - делать i--, само собой, если условие пропуска содержит учет номера шага, то для этого завести дополнительный счетчик настоящих шагов 

Если что под твою задачу лучше делать цикл while и считать количество 'новых слов' а не количество шагов, зачем тебе эти шаги
Похожие вопросы