Как можно вывести введенное пользователем в разбросанном виде?
Как можно вывести данные в одной строке в разбросанном виде в C++?
К примеру пользователь ввел Moskva и 123, и нужно чтобы получилось типо Moskva123, 123Moskva, и т.д.
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Те части, которые нужно перемешивать (отдельные слова, или буквы, или что там) - запихиваем в контейнер и перемешиваем с помощью shuffle...
mt19937 g(random_device{}());
vector<string> s = {"Moskva", "123", "456", "?!" };
for(int i = 0; i < 5; ++i)
{
shuffle(s.begin(),s.end(), g);
for(auto c: s) cout << c; cout << endl;
}
Если надо перебрать все варианты - используем перестановки:
sort(s.begin(),s.end());
do {
for(auto c: s) cout << c; cout << endl;
} while(next_permutation(s.begin(),s.end()));