Проблема в алгоритме
Задача функции:
Принимает на вход строку и переводит её в нижний регистр.
При каждой итерации выводить строку с одной буквой в верхнем регистре (Обьясню лучше на примере):
К примеру передадим в функцию "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);
}
}