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

Вывести на экран все возможные перестановки введенных ползователем символов - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 17
11.01.2014, 13:44     Вывести на экран все возможные перестановки введенных ползователем символов #1
С клавиатуры задается последовательность символов. Написать программу, которая выводит на экран все возможные перестановки введенных символов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 13:44     Вывести на экран все возможные перестановки введенных ползователем символов
Посмотрите здесь:

C++ Все возможные варианты перестановки символов строки
Массивы. Вычислить по формуле и вывести на экран все возможные комбинации сумм чисел C++
C++ Все возможные перестановки элементов заданного массива
C++ Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки.
Вывести на экран все возможные перестановки введенных символов. Где ошибка? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 334
11.01.2014, 13:59     Вывести на экран все возможные перестановки введенных ползователем символов #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdio>
#include <cstring>
 
void f(char*a);
int main()
{
    char str[]="vi na";
    f(str);
    puts(str);
}
void f(char*a)
{
    int l=strlen(a);    
for(int i=0;i<l;i+=2)
    {
        int t=a[i];
        a[i]=a[i+1];
        a[i+1]=t;
    }
}
может так ?
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 17
11.01.2014, 14:24  [ТС]     Вывести на экран все возможные перестановки введенных ползователем символов #3
Шас попробую

Добавлено через 17 минут
не работает
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 334
11.01.2014, 14:34     Вывести на экран все возможные перестановки введенных ползователем символов #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <algorithm>
#include <string>
#include <iostream>
 
int main()
{
    std::string s = "aba";
    std::sort(s.begin(), s.end());
    do {
        std::cout << s << '\n';
    } while(std::next_permutation(s.begin(), s.end()));
}
а так?
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 17
11.01.2014, 14:42  [ТС]     Вывести на экран все возможные перестановки введенных ползователем символов #5
о, спс))што зделать, штоб консоль сама не закривалась?

Добавлено через 5 минут
просто conio.h подключить?
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
11.01.2014, 14:43     Вывести на экран все возможные перестановки введенных ползователем символов #6
C++
1
system("pause");
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
11.01.2014, 14:43     Вывести на экран все возможные перестановки введенных ползователем символов #7
Цитата Сообщение от tolkin Посмотреть сообщение
штоб консоль сама не закривалась?
C++
1
2
system("pause");;
return 0;
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 17
11.01.2014, 14:47  [ТС]     Вывести на экран все возможные перестановки введенных ползователем символов #8
всьо, тепер норм)

Добавлено через 1 минуту
через conio. h тоже пашет

Добавлено через 1 минуту
а што здесь неправильно?хочу етот код розобрать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdio>
#include <cstring>
 
void f(char*a);
int main()
{
    char str[]="vi na";
    f(str);
    puts(str);
}
void f(char*a)
{
    int l=strlen(a);    
for(int i=0;i<l;i+=2)
    {
        int t=a[i];
        a[i]=a[i+1];
        a[i+1]=t;
    }
}
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 334
11.01.2014, 14:58     Вывести на экран все возможные перестановки введенных ползователем символов #9
tolkin, там прогамма работает правильно ,но не то находит что надо. Там меняются местами первый символ со вторым и третий с четвертым и так далее .Просто я сам ошибся с условием.
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 17
11.01.2014, 15:00  [ТС]     Вывести на экран все возможные перестановки введенных ползователем символов #10
ага, шас попробую исправить.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
11.01.2014, 15:01     Вывести на экран все возможные перестановки введенных ползователем символов #11
Пример из поста
Алгоритм перестановок
переделанный под строки
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
//////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <iostream>
#include <set>
#include <string>
//////////////////////////////////////////////////////////////////////////////////////
typedef std::string                  T_str;
typedef std::set<T_str::value_type>  T_dig_set;
//////////////////////////////////////////////////////////////////////////////////////
bool minimum_increasing_dig_swap(T_str  &s)
{
    bool  bool_res = false;
    if(s.size() <= 1) return bool_res;
    //Ищем, начиная с предпоследней, такую букву, справа от которой есть меньше нее.
    T_dig_set         tail_set;
    T_str::size_type  pos_L = s.size() - 1;
    do
    {
        tail_set = T_dig_set(s.begin() + --pos_L, s.end());
        bool_res = s[pos_L] != *tail_set.rbegin();    
    }while(   pos_L 
           && !bool_res);
 
    if(!bool_res)  return  bool_res;    
 
    //Ищем справа от s[pos_L] наименьшую букву, которая больше s[pos_L].    
    T_dig_set::const_iterator  dig_R_it  = tail_set.upper_bound(s[pos_L]);
    T_str::size_type           pos_R     = s.find(*dig_R_it, pos_L);
    //Переставляем буквы.
    std::swap(s[pos_L], s[pos_R]);
    //Сортируем хвост.
    std::sort(s.begin() + pos_L + 1, s.end());
    return  bool_res;    
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{    
    std::cout << "s = ";
    T_str s;
    std::cin>>s;
 
    int  counter = 0;
    while(minimum_increasing_dig_swap(s))
    {
        ++counter;
        std::cout << s
                  << std::endl;
    }
    if(!counter)
    {
        std::cout << "Such string doesn't exist."
                  << std::endl;
    }
    else
    {
        std::cout << "Total "
                  << counter
                  << " strings."
                  << std::endl;    
    }
    system("pause");
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 17:17     Вывести на экран все возможные перестановки введенных ползователем символов
Еще ссылки по теме:

Рекурсия. Вывести на экран все перестановки чисел от 1 до n в лексикографическом порядке. C++
C++ Вывести все возможные перестановки слов в предложении
C++ Рекурсивная функция: все возможные перестановки символов строки

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

Или воспользуйтесь поиском по форуму:
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 17
11.01.2014, 17:17  [ТС]     Вывести на экран все возможные перестановки введенных ползователем символов #12
всем спасибо)буду розбирать

Добавлено через 2 часа 0 минут
sergei60, в прототипе нельзя писать имя переменной, по-моему...

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <cstdio>
#include <cstring>
 
void f(char*a);
int main()
{
    char str[]="vi na";
    f(str);
    puts(str);
}
void f(char*a)
{
    int l=strlen(a);    
for(int i=0;i<l;i+=2)
    {
        int t=a[i];
        a[i]=a[i+1];
        a[i+1]=t;
    }
}
Yandex
Объявления
11.01.2014, 17:17     Вывести на экран все возможные перестановки введенных ползователем символов
Ответ Создать тему
Опции темы

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