Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 18
#1

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

11.01.2014, 13:44. Просмотров 1273. Ответов 11
Метки нет (Все метки)

С клавиатуры задается последовательность символов. Написать программу, которая выводит на экран все возможные перестановки введенных символов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 13:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести на экран все возможные перестановки введенных ползователем символов (C++):

Вывести на экран все возможные перестановки введенных символов. Где ошибка? - C++
С клавиатуры задается последовательность символов. Написать программу, которая выводит на экран все возможные перестановки введенных...

Все возможные варианты перестановки символов строки - C++
Дана строка s, состоящая из n символ (n меньше 6) составить все возможные варианты перестановки этих символов (язык C)

Рекурсивная функция: все возможные перестановки символов строки - C++
Дана строка с n элементами. Например abs. Надо выводить все возможные варианты например abs asb bas bsa sab sba. Надо...

Вывести все возможные перестановки слов в предложении - C++
С клавиатуры пишем предложение. Вывести все возможные перестановки тех слов в этом предложении, что не содержат первых десяти букв...

Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки. - C++
Дана строка, состоящая из M попарно различных символов. Вывести все перестановки символов данной строки. Ввод В первой строке файла...

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

11
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 374
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;
    }
}
может так ?
1
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 18
11.01.2014, 14:24  [ТС] #3
Шас попробую

Добавлено через 17 минут
не работает
0
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 374
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()));
}
а так?
1
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 18
11.01.2014, 14:42  [ТС] #5
о, спс))што зделать, штоб консоль сама не закривалась?

Добавлено через 5 минут
просто conio.h подключить?
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5097 / 1535 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
11.01.2014, 14:43 #6
C++
1
system("pause");
1
zss
Модератор
Эксперт С++
6531 / 6093 / 2007
Регистрация: 18.12.2011
Сообщений: 15,845
Завершенные тесты: 1
11.01.2014, 14:43 #7
Цитата Сообщение от tolkin Посмотреть сообщение
штоб консоль сама не закривалась?
C++
1
2
system("pause");;
return 0;
1
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 18
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;
    }
}
0
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 374
11.01.2014, 14:58 #9
tolkin, там прогамма работает правильно ,но не то находит что надо. Там меняются местами первый символ со вторым и третий с четвертым и так далее .Просто я сам ошибся с условием.
1
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 18
11.01.2014, 15:00  [ТС] #10
ага, шас попробую исправить.
0
zss
Модератор
Эксперт С++
6531 / 6093 / 2007
Регистрация: 18.12.2011
Сообщений: 15,845
Завершенные тесты: 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");
}
1
tolkin
0 / 0 / 0
Регистрация: 11.01.2014
Сообщений: 18
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;
    }
}
0
11.01.2014, 17:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 17:17
Привет! Вот еще темы с ответами:

Массивы. Вычислить по формуле и вывести на экран все возможные комбинации сумм чисел - C++
Доброго всем времени суток.Я делаю только первые шаги в программировании.Начал разбираться с массивами простенькие задачки вроде...

Все возможные перестановки элементов заданного массива - C++
Помогите вывести на консоль все возможные перестановки элементов заданного массива void printPermutations (int items , int itemsLength) {...

Все возможные перестановки букв слова - нужен алгоритм - C++
Доброго времени суток, форумчане. Помогите пожалуйста найти/составить алгоритм решения следующей задачи: Дано слово. Найти все возможные...

С помощью метода эффективного порождения перестановок вывести на экран все перестановки множества - C++
Напишите пожалуйста программу задание такое: С помощью метода эффективного порождения перестановок вывести на экран все перестановки...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru