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

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

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

генерация строки из символов А,В,С - C++

31.03.2013, 19:01. Просмотров 347. Ответов 1
Метки нет (Все метки)

вот код задачи.
условие:
нужно сгенерировать строку(N<=100), состоящую из букв A,B,C такую, чтобы не было одинаковых поднизов(N=6
ABACBA-верно
AABCAC or ABABCB or BCABCA-неверно


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
#include <iostream>
#include <string>
#include <ctime>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
using namespace std;
const int N=10;
void create(char a[]);
int check(char red[]);
char b[3]={'A','B','C'};
void main()
{
    char red[N+1];
    int i,flag(0);
    do
    {
        create(red);
        flag=check(red);
    }
    while(flag!=0);
    for(i=0;i<N;i++)
        cout<<red[i];
    cout<<endl;
}
void create(char a[])
{
    int i,k;
    srand(time(NULL));
    for(i=0;i<N;i++)
    {
        k=rand()%3;
        a[i]=(char)b[k];
    }
    for(i=0;i<N;i++)
        cout<<a[i];
    cout<<endl;
}
int check(char red[])
{
    int i,flag(0),k(1);
        for(i=0;i<N-1;i++)
        {
            if(red[i]==red[i+1])
                flag=1;
            if(red[i]==red[i+2] && red[i+1]==red[i+3])
                flag=1;
            if(red[i]==red[i+3] && red[i+1]==red[i+4] && red[i+2]==red[i+5])
                flag=1;
        }
 
    return flag;
}
может у кого-то будут другие идеи относительно генерации такой строки

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

Получить из строк новую строку, содержащюю первые N1 символов строки S1 и последнии N2 символов строки S2 - C++
помогите написать программу на двух разных классах! 2) Даны целые положительные числа N1 и N2 и строки S1 и S2. Получить из этих строк...

генерация рандомных символов - C++
Народ есть некоторый код для генерации символов с кодом(рандомным), эти числа забиваются в массив. Проблема в том, что каждый раз программа...

Генерация строк из случайных символов массива - C++
Запросить у пользователя количество строк, которые нужно сгенерировать, минимальное и максимальное количество символов в строке и название...

Генерация в массиве двух случайных символов - C++
Здравствуйте, есть такая задача &quot; Дан символьный массив размером p*p элементов (p&lt;=10), содержащий только символы ‘&amp;’ и ‘$’. Для каждой...

Ошибка ввода символов строки, при количестве символов кратных 8 - C++
Здравствуйте, уважаемые форумчане! Разбираясь с механизмом ввода и динамическим выделением памяти для строк решил написать такой...

Каждое слово строки состоящее более, чем из 8 символов, сократить до первых 8 символов - C++
Нуждаюсь в помощи. Нужно написать программу на C++(в принципе, и на Си можно) которая делает следующее: В каждой строке каждое слово,...

1
anmartex
...
1706 / 1199 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
01.04.2013, 07:55 #2
arkanoid555, ваш подход в корне не верный. Какова вероятность того, что случайным образом сформируется нужная вам последовательность? Даже на 6 элементов это маловероятно.
Я не утверждаю что мой подход верен, ибо я до конца так и не уловил все тонкости задания, но вот что у меня получилось:
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
63
64
65
66
#include <iostream>
#include <cstdlib>
 
bool create(char str[], size_t length)
{
   static const char CChar[] = {'A', 'B', 'C'};
   static const size_t CCharSize = sizeof(CChar) / sizeof(*CChar);
 
   str[0] = CChar[0];
 
   bool find = true;
 
   for (size_t i = 0; (i < length-1) && find; ++i)
   {
      find = false;
 
      size_t j = 0;
      for (; (j < CCharSize) && !find; ++j)
      {
         find = (str[i] != CChar[j]);
 
         if (find && (i > 1) && (str[i-2] == str[i]) && (str[i-1] == CChar[j]))
         {
            find = false;
         }
 
         if (find && (i > 4) && (str[i-5] == str[i-2]) && (str[i-4] == str[i-1]) && (str[i-3] == CChar[j]))
         {
            find = false;
         }
      }
 
      if (find)
      {
         str[i+1] = CChar[j-1];
      }
   }
 
   return find;
}
 
int main()
{
 
   char str[101] = { 0 };
   size_t length;
 
   do
   {
      std::cout << "input length (n <= 100): ";
      std::cin >> length;
   }  while (100 < length);
 
   if (create(str, length))
   {
      std::cout << str << std::endl;
   }
   else
   {
      std::cout << "not created" << std::endl;
   }
 
   system("pause");
 
   return 0;
}
генерация строки из символов А,В,С

Бинарник + исходник: program.7z
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2013, 07:55
Привет! Вот еще темы с ответами:

Генерация таблицы из строки - C++
программа должна из строки “abcdefghijklmnopqrstuvwxyz^” генерировать следующую таблицу ну, допустим, программа считает строку, а как...

Удалить конец строки символов. Ввести кол-во удаляемых символов , вывести результат ,String ,задачка,С++ - C++
Удалить конец строки символов. Ввести количество удаляемых символов , вывести результат на печать . Помогите плиз с задачкой. тема :...

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

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


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

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

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