Проблема в алгоритме

Задача функции:

  1. Принимает на вход строку и переводит её в нижний регистр.

  2. При каждой итерации выводить строку с одной буквой в верхнем регистре (Обьясню лучше на примере):

К примеру передадим в функцию "hello".

И она должна выводить каждую секунду:

Hello

hEllo

heLlo

helLo

hellO

Но в моей функции в одной итерации выводит сразу все одинаковые буквы в верхнем регистре.

void anim(string &word) {
// Перевод строки в нижний регистр
    for(char & i : word)
        i = tolower(i);

    static int bid = 0;
    while (true) {
        vector<char> res;
        for (int i = 0; i < word.size(); ++i) {
            if (word.find(word[i]) == bid) {
                res.push_back(toupper(word[i]));
            }
            else {
                res.push_back(word[i]);
            }
        }

        for (char i : res)
            cout << i;
        cout << endl;
        bid++;
        sleep(1);
        break;
    }
}

Ответы (1 шт):

Автор решения: DSuhoi

У вас в конце цикла while стоит оператор break. (Можно сократить эту функцию до двух циклов)

void anim(string &word) {

    // Перевод строки в нижний регистр
    for(char & i : word)
        i = tolower(i);

    for(int i = 0; i < word.size(); i++){
        word[i] = toupper(word[i]); //переводим данный символ в верхний регистр
        cout << word << '\n';   //выводим строку
        word[i] = tolower(word[i]); //переводим обратно в нижний регистр
        sleep(1);
    }
}
→ Ссылка