Замена ряда симовлов в строке

4you

еееххххх....
Замена ряда симовлов в строке

Есть некое слово к примеру: Ева. Необходимо все гласные буквы заменить например на * и составить все возможные слова. Ну например у слова Ева будет 3 варианта:
*ва
Ев*
***
Подскажите по какому принципу можно было бы это сделать?
Я пытаюсь это сделать просто идя по слову, нахожу гласную, меняю, и добавляю в массив новое слово. Но таким путём я получаю всего два результата:
*ва
Ев*
 

Crazy

Developer
О! Опять студенты со своими задачками потянулись...
 

Dimonuch

Guest
2Crazy
:D

24you
что-то я тебя не понял. Как у тебя *** должно получиться, когда В это согласная? Или ты хотел сказать *в*?
 

Alkinoy

Guest
Есть такой вариант алгоритма. Раз уж это задача, надо что то интересное сделать. Так вот:
1.Считаешь число гласных буквей в слове.
2. создаешь двоичное число с колич. разрядов = числу гласных
3. потом начинаешь инкрементировать это число. При этом в результат пишешь исходное слово в котором вместо гласных пишешь либо гласную (если СООТВЕТСТВУЮЩИЙ разряд двоичного числа = 0), или * (если разряд = 1).
В твоем примере должно плучиться двуразрядное двоичное число. при этом младший разряд (справа который) отвечает за букву "а", а старший - за "Е". Вот и получишь:
01 Ев*
10 *ва
11 *в*

Ты вроде это хотел?
 

4you

еееххххх....
что-то я тебя не понял. Как у тебя *** должно получиться, когда В это согласная? Или ты хотел сказать *в*?
Да, ошибся я
Есть такой вариант алгоритма. Раз уж это задача, надо что то интересное сделать. Так вот:
Здесь вроде бы всё понятно, но не ясен один момент каким образом менять гласные. Да у меня есть там слово: Вася. Составил себе число двухразрядное 0101, а дальше как?
Т.е. инкрементровать число? Увеличивать ?
 

Alkinoy

Guest
Вообще то идея была такая, что число разрядов в двоичном числе равно числу гласных. Т.е. слову Вася соответствует число 00, а не 0101. При инкрементировании получаешь, например, из 00 -> 01. Дальше смотришь: старший разряд равен 0. Значит первая грасная остается на месте. Следовательно а не меняем. Потом смотрим - более младший разряд - 1. Значит СООТВЕТСТВУЮЩУЮ ЭТОМУ РАЗРЯДУ гласную заменяем на * - т.е. вместо я надо поставить *. Вот и получили Вас*.
Просто если слово будет типа "аутентификация" - заморишься искать все варианты. А так не пропустишь ни одного. Главное - написать обработчик гласных в соответствии с двоичным числом. Но, зная где стоят гласные, это вроде не сложно.
Опять же повторюсь - это вариант алгоритма, если не хочешь, чтоб твоя контрольная была похожа на все предыдущие.
 

4you

еееххххх....
Млин. Торможу. Спасибо идею понял. Щя будем её воплощать. Ещё раз 10хххх :)
 
Сверху