Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 15.05.2017
Сообщений: 93
1

Цепочки в С++

01.11.2017, 18:13. Показов 1609. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет) прошу вашей помощи, сам понять никак не получается..
Собственно говоря, вот задание:
Создать программу на С++, которая будет продуцировать цепочки(слова) в трехсимвольном алфавите с записью их в файл, причем длина L цепочек ограничена: L1(4) <= L <= L2(8) и для каждой цепочки, отобранной в файл, должно выполняться условие <Содержит ровно два символа «с», заканчивается на «bс» и символы «а» и «b» не стоят рядом >. Общее количество цепочек в файле должно быть не более M(20).
Помогите кому не сложно, это очень важно..
Спасибо заранее
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2017, 18:13
Ответы с готовыми решениями:

STL: найти все максимальные цепочки подряд идущих положительных чисел с указанием длины каждой цепочки
Создать массив длины N (число N вводится с клавиатуры). Заполнить массив рандомно. Найти все...

Цепочки в С++
Помогите разобраться с кодом, буквально построчно, спасибо заранее :) #include &lt;iostream&gt;...

RC цепочки
Почитал http://iosyitistromyss.ru/kondensator-i ... ochka.html и совсем запутался. Дайте ответы на...

Цепочки в VS C++
Не работает следующий код в Visual Studio 2010 C++ __asm{ data segment mas dw...

13
447 / 323 / 129
Регистрация: 18.07.2017
Сообщений: 1,455
01.11.2017, 18:57 2
Алфавит содержит символы: A, B, C.
Из них состоят слова длиной от 4 до 8 символов.

Нужно записать в файл не более 20-ти слов, у которых:
1) Ровно 2 символа "с"
2) Последние буквы "bc"
3) Нет комбинаций "ab" и "ba"
0
1 / 1 / 0
Регистрация: 15.05.2017
Сообщений: 93
01.11.2017, 18:59  [ТС] 3
assemberist, я это понимаю, у меня есть набросок, но он работает не так как нужно.. Я думал, может не правильно что то рассчитал..
0
447 / 323 / 129
Регистрация: 18.07.2017
Сообщений: 1,455
01.11.2017, 19:20 4
Я бы советовал сначала найти все комбинации букв. В этом нам поможет комбинаторика: количество слов из 4-х букв можно найти, по формуле "размещения с повторениями". Точно также для слов другой длины.
Далее можно создать тройной указатель типа char. Выделить память на массивы слов. Их будет 4 так как длина слов то 4-х до 8-ми букв. Затем под каждый массив выделить память под ранее подсчитанное кол-во слов. И, наконец, записывать туда эти слова.
0
1 / 1 / 0
Регистрация: 15.05.2017
Сообщений: 93
01.11.2017, 19:34  [ТС] 5
assemberist, спасибо за совет.
0
4065 / 3318 / 925
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
01.11.2017, 19:40 6
просто генерируем строки вида a....acb...bc

Добавлено через 4 минуты
и ещё b....bcb...bc
0
447 / 323 / 129
Регистрация: 18.07.2017
Сообщений: 1,455
01.11.2017, 19:42 7
Так можно перебрать все комбинации

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
char* brutfors(int n, int i){
    char* a=new char[n+1];
    a[n]='\0';
    n--;
 
    for(; n>=0; n--){
        switch(i%3){
            case 0: a[n]='A'; break;
            case 1: a[n]='B'; break;
            case 2: a[n]='C'; break;
        }
        i/=3;
    }
    return a;
}
 
int main()
{
    char*** h;
    h=new char**[5];
    h[0]=new char*[81];
    h[1]=new char*[243];
    h[2]=new char*[729];
    h[3]=new char*[2187];
    h[4]=new char*[6561];
 
    for (int i = 0; i < 81; i++) {h[0][i]=brutfors(4, i);}
    for (int i = 0; i < 243; i++) {h[1][i]=brutfors(5, i);}
    for (int i = 0; i < 729; i++) {h[2][i]=brutfors(6, i);}
    for (int i = 0; i < 2187; i++) {h[3][i]=brutfors(7, i);}
    for (int i = 0; i < 6561; i++) {h[4][i]=brutfors(8, i);}
}
0
4065 / 3318 / 925
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
01.11.2017, 19:43 8
assemberist, бpед
0
447 / 323 / 129
Регистрация: 18.07.2017
Сообщений: 1,455
01.11.2017, 19:45 9
А далее необходимо просто пройти записи и занулить все, которые не соответствуют требованиям.
И вывести 20 оставшихся. По хорошему нужно еще освободить память после этого. Мы же не хотим утечек памяти)
0
4065 / 3318 / 925
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
01.11.2017, 19:53 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int main(){
    int count20 = 20;
    for (string as = ""; as != "aaaaaa" && count20 != 0; as += "a")
        for (string bs = "b"; (as + bs).size() + 1 != 8 && count20 != 0; bs += "b")
        {
            cout << as + "c" + bs + "c" << endl;
            count20--;
        }
    for (string as = "b"; as != "bbbbbb" && count20 != 0; as += "b")
        for (string bs = "b"; (as + bs).size() + 1 != 8 && count20 != 0; bs += "b")
        {
            cout << as + "c" + bs + "c" << endl;
            count20--;
        }
    system("pause");
    return 0;
}
0
1 / 1 / 0
Регистрация: 15.05.2017
Сообщений: 93
01.11.2017, 20:00  [ТС] 11
Kuzia domovenok, спасибо большое за помощь)
А вы бы не могли немного объяснить момент "for (string as = ""; as != "aaaaaa" && count20 != 0; as += "a")
for (string bs = "b"; (as + bs).size() + 1 != 8 && count20 != 0; bs += "b")"? Ну если вам конечно не трудно, пожалуйста
0
4065 / 3318 / 925
Регистрация: 25.03.2012
Сообщений: 12,495
Записей в блоге: 1
01.11.2017, 20:03 12
цикл от "a" до "aaaaaa"
а вы думали, циклы только числам бывают?
вы в курсе, что в С++ есть строки и их можно складывать через плюс?
0
447 / 323 / 129
Регистрация: 18.07.2017
Сообщений: 1,455
01.11.2017, 20:04 13
Кол-во букв в словах должно быть больше 3-x и меньше 9-ти. Нужно условие на вывод прикрутить.
0
1 / 1 / 0
Регистрация: 15.05.2017
Сообщений: 93
01.11.2017, 20:07  [ТС] 14
Kuzia domovenok, для меня тема цепочек самая сложная(( я с числами в основном работаю, спасибо вам за помощь
0
01.11.2017, 20:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2017, 20:07
Помогаю со студенческими работами здесь

формирование цепочки
procedure TForm4.Button3Click(Sender: TObject); var curr:TPmebel; x:system.text;...

Неубывающие цепочки
Дана последовательность натуральных чисел X=(x1,...xn). Её подпоследовательность (xm+1,...

Моделирование RC цепочки
помогите сделать Моделирование RC цепи,вообще не шарю в матлабе,еще обьяснить не помешало бы,если...

Цепочки и алфавит
Здравствуйте. Подскажите пожалуйста,как решить такую задачу: в русском языке 33 буквы. Сколько...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru