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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.88
recovery101
1 / 1 / 0
Регистрация: 10.06.2011
Сообщений: 10
#1

Составить слово из букв A, B, C - C++

08.01.2012, 21:40. Просмотров 3105. Ответов 7
Метки нет (Все метки)

Здравствуйте. Прошу помочь написать прогу, которая составляет из букв A, B, C слово длины N. В слове не должны рядом стоять одинаковые сочетания букв.
Например:
ABCABA - составлено правильно.
CABABC - составлено неправильно. Там АВ стоят рядом.
Длина N вводится с клавиатуры. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2012, 21:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Составить слово из букв A, B, C (C++):

Можно ли из букв слова X составить слово Y? - C++
проверьте , можно ли из букв слова Х составить слово У.Пожалуйста помогите , вобще не понимаю как это делать(

Проверить можно ли из букв составить слово - C++
Вводится число n. Далее вводится словарь из n букв. Буквы могут повторяться.Далее вводится слово.Нужно проверить можно ли из букв из...

Составить слово из букв, заданных в двухмерном массиве - C++
Двухмерный масив n*m содержит некоторые буквы русского алфавита , расположенные в произвольном порядке. Написать...

Проверить, можно ли из данных букв составить заданное слово S - C++
Люди, помогите решить задачу: Двумерный массив М N содержит некоторые буквы русского алфавита, расположенные в произвольном порядке....

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

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

7
Sadom
11 / 11 / 1
Регистрация: 06.01.2012
Сообщений: 19
08.01.2012, 22:42 #2
Как-то так, если я правильно понял условие..

code
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
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main()
{
    srand(time(NULL));
    int x;
    int n = 0, n1 = 0, n2 = 0;
 
    cout << "Enter the lenght of word: ";
    cin >> x;
 
    for (int i = 1; i <= x; i++)
    {
        while(true)
        {
            n = rand() % 3;
            if (n2 != n)
            {
                switch(n)
                {
                    case 0:
                    cout << "A";
                    break;
                    case 1:
                    cout << "B";
                    break;
                    case 2:
                    cout << "C";
                    break;
                }
                n2 = n1;
                n1 = n;
                break;
            }
        }
    }
    system("pause");
    return 0;
}
1
Gepar
1178 / 534 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
08.01.2012, 23:18 #3
Sadom, не работает что-то ваш код. Вы его проверяли?

Добавлено через 3 минуты
У самого что-то идеи не возникают изящной реализации вашего задания. Есть возможность перебирать все варианты для слова длины n задействовав stl (next_permutation), но вот длины n только из abc ...
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
08.01.2012, 23:21 #4
Проверяйте
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
#include <iostream>
#include <algorithm>
#include <ctime>
 
bool cmp (int i,int j) { return (i<j); }
 
char gen() { 
   static char c = 'A' ; 
   if ( c == 'C')
      c = 'A';
   else 
      ++c;
   return c;
}         
 
bool fun (char *first, char *last) {
   char *it = first + 1;
   for ( ; (it + 2) < last ; it ++ )
      if ( ( *(it - 1) == *(it + 1) ) && ( *it == *(it + 2) ) )
         return true;
   return false;
}         
 
 
int main() {
   srand ( time (NULL) );
   int N = rand() % 15 + 5;
   char *arr = new char [N];
   
   std::generate (arr, arr + N, gen);
   
   std::sort (arr, arr + N); 
   
   while ( std::next_permutation (arr, arr + N) && fun (arr, arr + N) ) ;
   std::cout << "N = " << N << std::endl << arr << std::endl;
   return 0;
}
http://liveworkspace.org/code/a05769bc028c1eec10084fd672342da3
1
recovery101
1 / 1 / 0
Регистрация: 10.06.2011
Сообщений: 10
08.01.2012, 23:22  [ТС] #5
Sadom, чувак, спасибо огромное) всё ок работает. Огромное спасибо!)
0
Sadom
11 / 11 / 1
Регистрация: 06.01.2012
Сообщений: 19
08.01.2012, 23:24 #6
не за что )
0
recovery101
1 / 1 / 0
Регистрация: 10.06.2011
Сообщений: 10
08.01.2012, 23:28  [ТС] #7
Спасибо все остальным тоже за помощь)
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
08.01.2012, 23:28 #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
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <algorithm>
#include <ctime>
 
bool cmp (int i,int j) { return (i<j); }
 
char gen() { 
   static char c = 'A' ; 
   if ( c == 'C')
      c = 'A';
   else 
      ++c;
   return c;
}         
 
bool fun (char *first, char *last) {
   char *it = first + 1;
   for ( ; (it + 2) < last ; ++it )
      if ( ( *(it - 1) == *(it + 1) ) && ( *it == *(it + 2) ) )
         return true;
   return false;
}         
 
 
int main() {
   srand ( static_cast<unsigned> (time (NULL)) );
   int N = rand() % 15 + 5;
   char *arr = new char [N + 1];
   
   std::generate (arr, arr + N, gen);
   arr[N] = '\0';
 
   std::sort (arr, arr + N); 
   
   while ( std::next_permutation (arr, arr + N) && fun (arr, arr + N) ) ;
   std::cout << "N = " << N << std::endl << arr << std::endl;
 
   std::system ("pause");
   return 0;
}
2
08.01.2012, 23:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2012, 23:28
Привет! Вот еще темы с ответами:

Проверить, можно ли из данных символов (букв) составить заданное слово (предложение) - C++
Здравствуйте! Помогите пожалуйста с идеей решение, не знаю с чего начать: Проверить, можно ли из данных символов (букв) составить...

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

Программа, которая проверяет, можно ли введенное с клавиатуры слово (stroka_2) составить из букв исходного слова - C++
#include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;locale.h&gt; int Check(char *s, char *t) { int i, count = {0}; while(*s) ...

Ввести строку и слово. Вывести те слова, которые не содержат букв, входящих в слово. - C++
Ребят помогите плииизз... только мне сказали через стандартную библиотеку Добавлено через 1 минуту Ах да и если не сложно, пояснения...


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

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

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