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

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

Войти
Регистрация
Восстановить пароль
 
dima24rus
0 / 0 / 0
Регистрация: 01.10.2012
Сообщений: 8
#1

размещения - C++

26.10.2012, 17:44. Просмотров 721. Ответов 10
Метки нет (Все метки)

помогите с задачей
ввожу слово например:
ab
прога должа вывести:
a
b
ab
ba

может можно эту программу переделать, чтоб она выводила по одному, по два символа и т.д.
и чтоб ввод слова был с клавиатуры!

помогите пожалуйста!(
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <algorithm>
#include <string>
#include <iostream>
 
int main()
{
    std::string s = "abc";
    std::sort(s.begin(), s.end());
    do {
        std::cout << s << '\n';
    } while(std::next_permutation(s.begin(), s.end()));
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2012, 17:44
Здравствуйте! Я подобрал для вас темы с ответами на вопрос размещения (C++):

Размещения с повторением - C++
Постановка задачи такова: На входе даются два числа &quot;n&quot; и &quot;k&quot;.n-максимальное число в последовательности,а k-длина последовательности ...

Рекурсия: размещения из 10 по 3 элемента - C++
Помогите Плз Плз Плз Плз Плз Получить все размещения из 10 элементов 1, 2,..., 10 по 3 в каждом. Размещением называется выборка из п...

Рекурсия. Комбинаторика. Размещения - C++
Дана задача: вывести все размещения из n по k, где n - это число элементов конечного множества (например, задаваемого из файла). Комбинации...

Архитектура размещения h и cpp файлов - C++
Доброго времени суток! Есть библа, содержащая ряд функций. Допустим, func1, func2 и ещё over 10. Меня интересует, как стандарты, здравая...

Правила размещения объектов в памяти - C++
Привет всем! Подскажите пожалуйста, искал по форуму поиском ответ, но не нашел. Имеем такой код: class A{ public A(); ...

Функция размещения переменных в динамической памяти! - C++
Подскажите ошибку! вроде все сделал по методе, а не работает! проблема с переменными iP1, iP2, iP3 Правда в методе было написано так ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
John Prick
778 / 711 / 131
Регистрация: 27.07.2012
Сообщений: 2,044
Завершенные тесты: 3
26.10.2012, 21:58 #2
добавь после sort
C++
1
std::copy(s.begin(), s.end(), std::ostream_iterator<char>(std::cout, "\n"));
Будет выводить по 1му символу.
Ввод строки с клавиатуры тут в каждой третьей теме.
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
26.10.2012, 22:35 #3
John Prick, для строки "abc" выводит только по одному и по три.
А по два нет.
John Prick
778 / 711 / 131
Регистрация: 27.07.2012
Сообщений: 2,044
Завершенные тесты: 3
26.10.2012, 22:37 #4
Цитата Сообщение от Roof Посмотреть сообщение
А по два нет.
А как для строки abc должно выводить по 2?
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
26.10.2012, 22:55 #5
Как я понимаю по два:
ab
ba
bc
cb
ac
ca

Ведь если для строки "abc" нужно по одному, то ведь и по два тоже должно быть нужно.
John Prick
778 / 711 / 131
Регистрация: 27.07.2012
Сообщений: 2,044
Завершенные тесты: 3
26.10.2012, 23:06 #6
next_permutation применять не ко всей строке, а к части только для таких перестановок.

Добавлено через 1 минуту
потом делать циклический сдвиг на 1 и снова цикл перестановок.
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
26.10.2012, 23:07 #7
Цитата Сообщение от John Prick Посмотреть сообщение
next_permutation применять не ко всей строке, а к части только для таких перестановок.
На это и хотел обратить внимание.
John Prick
778 / 711 / 131
Регистрация: 27.07.2012
Сообщений: 2,044
Завершенные тесты: 3
26.10.2012, 23:35 #8
Чё-то даже как-то затянуло, хотя совсем не хотел студию запускать
Вариант "на скорую руку". Наверное, можно что-то подправить.
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
#include <iostream>
#include <string>
#include <algorithm>
 
int main(void)
{
    std::string s = "abcd";
    std::sort(s.begin(), s.end());
    std::copy(s.begin(), s.end(), std::ostream_iterator<char>(std::cout, "\n"));
 
    std::string::iterator it = s.begin() + 1;
    do {
        unsigned int i = s.length();
        do {
            std::sort(s.begin(), it + 1);
            do {
                std::copy(s.begin(), it + 1, std::ostream_iterator<char>(std::cout, ""));
                std::cout << '\n';
            } while (std::next_permutation(s.begin(), it + 1));
            std::rotate(s.begin(), s.begin() + 1, s.end());
            --i;
        } while (i > 0);
        std::sort(s.begin(), s.end());
        ++it;
    } while (it != s.end() - 1);
 
    do {
        std::cout << s << '\n';
    } while (std::next_permutation(s.begin(), s.end()));
    system("pause");
}
dima24rus
0 / 0 / 0
Регистрация: 01.10.2012
Сообщений: 8
27.10.2012, 09:41  [ТС] #9
Спасбо за помощь! только я не могу понять как исправить ошибку в последнем посте) помогите)
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
27.10.2012, 10:09 #10
добавь #include <iterator>
dima24rus
0 / 0 / 0
Регистрация: 01.10.2012
Сообщений: 8
27.10.2012, 12:23  [ТС] #11
Спасибо боьшое! все работает)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2012, 12:23
Привет! Вот еще темы с ответами:

Выписать все возможные размещения k из n предметов - C++
Дано n предметов, каждый предмет имеет порядковый номер. Написать программу, которая выписывает все возможные размещения k из n...

Правильность размещения трех видов скобок - C++
Помогите пожалуйста, я первый курс и на завтра нужно сдать. Составьте программу, определяющую правильность размещения трех видов...

Какая схема размещения массивов в памяти? - C++
Помогите, нужны ответи на вопросы!!!!! 1) Что такое индексация элементов массива? 2) Что такое генератор случайных чисел и как с его...

Используя рекурсию, определить правильность размещения скобок - C++
Написать программу, что определяет правильность размещения трьох видов скобок ( ), , { }. Использовать рекурсию


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.10.2012, 12:23
Ответ Создать тему
Опции темы

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