Форум программистов, компьютерный форум CyberForum.ru

Найти все возможные варианты написания слова в верхнем и нижнем регистрах букв. - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.62
Alex Ved
Сообщений: n/a
06.07.2010, 10:26     Найти все возможные варианты написания слова в верхнем и нижнем регистрах букв. #1
Хотелось бы увидеть кусочек кода, который выполнял бы следующее: Есть слово "Напримерэто". Как мне вывести на экран (в файл, принтер - без разницы) весь список возможных вариантов этого слова, но в различных регистрах
Пример:
Напримерэто
НАпримерэто
НАПримерэто
....
напримерЭТО
напримерэТО
напримерэтО
.....
НаПрИмЕрЭтО
.....
наПРитмерЭто & etc.

Заранее благодарен.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2010, 10:26     Найти все возможные варианты написания слова в верхнем и нижнем регистрах букв.
Посмотрите здесь:

Структуры. Вывести все возможные варианты покупки товаров C++
C++ Все возможные варианты перестановки символов строки
C++ Все возможные перестановки букв слова - нужен алгоритм
C++ Получить все возможные варианты загрузки ящиков
C++ Вывести все возможные варианты перестановок от 1 до n
Рассчитать все возможные варианты для 3 знаков C++
Определить все возможные варианты выплаты суммы N монетами 2 5 10 C++
C++ Вывести все возможные варианты разреза трубы

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mr.X
Эксперт С++
 Аватар для Mr.X
2803 / 1579 / 247
Регистрация: 03.05.2010
Сообщений: 3,670
06.07.2010, 14:19     Найти все возможные варианты написания слова в верхнем и нижнем регистрах букв. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
///////////////////////////////////////////////////////////////////////////////////
//  Вывести на экран весь список возможных вариантов слова в различных регистрах.
///////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <bitset>
#include <cmath>
#include <iostream>
#include <limits>
#include <locale>
#include <string>
 
typedef std::string  T_str;
 
void print_razn_case(T_str  word)
{
    static const int WORD_LEN_MAX = std::numeric_limits<unsigned long>::digits;    
    if(word.size() > WORD_LEN_MAX)
    {
        std::cout << "Слово должно быть не длиннее "
                  << WORD_LEN_MAX
                  << "."
                  << std::endl;
        return;
    }    
    
    struct T_make_case
    {
        char operator() (char symbol, char upper_flag)
        {
            return  upper_flag == '1' ? std::toupper(symbol, std::locale(""))                             
                                      : std::tolower(symbol, std::locale(""));                            
        } 
    };
    double  variants_total = pow(static_cast<double>(2), static_cast<int>(word.size()));
    typedef std::bitset<WORD_LEN_MAX>  T_upper_flags;    
    for(
           T_upper_flags  upper_flags; 
           upper_flags.to_ulong() < variants_total; 
           upper_flags = T_upper_flags(upper_flags.to_ulong() + 1) 
       )
    {      
        /*
        T_str  upper_flags_str = upper_flags.template to_string
                                 <char, std::char_traits<char>, std::allocator<char> >();       
        */
        T_str  upper_flags_str = upper_flags.to_string();      
        std::transform(word.begin(), word.end(),
                       upper_flags_str.begin() + WORD_LEN_MAX - word.size(), 
                       std::ostream_iterator<char>(std::cout, ""),
                       T_make_case());
        std::cout << std::endl;       
    }    
    std::cout << "Всего вариантов "
              << variants_total
              << "."
              << std::endl;
}
 
int main()
{
    std::locale::global(std::locale("rus"));        
    T_str  word = "Напримерэто";                    
    print_razn_case(word);    
    return 0;
}
uggway
219 / 133 / 9
Регистрация: 12.04.2010
Сообщений: 248
06.07.2010, 16:20     Найти все возможные варианты написания слова в верхнем и нижнем регистрах букв. #3
Менее страшно...
C++
1
2
3
4
5
6
7
8
9
10
char *s = "напримерэто", v;
    int l = strlen(s);
    for(int i = 0; i < 1 << l; i++)
    {
        for(int j = 0; j < l; j++){
            if(i & (1<<j)) v = toupper(s[j]); else v = tolower(s[j]);
            cout << v;
        }
        cout << endl;
    }
Yandex
Объявления
06.07.2010, 16:20     Найти все возможные варианты написания слова в верхнем и нижнем регистрах букв.
Ответ Создать тему
Опции темы

Текущее время: 03:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru