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

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

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

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

31.03.2013, 19:01. Просмотров 339. Ответов 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;
}
может у кого-то будут другие идеи относительно генерации такой строки

заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.03.2013, 19:01     генерация строки из символов А,В,С
Посмотрите здесь:

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

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

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

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

Описать функцию, что добавляет N символов строки S2 в конец строки S1 - C++
Помогите пожалуйста с выполнением лабораторной работы. Задание: 1. Разработать и реализовать функцию на языке С. 2. Провести ее...

как сделать из строки массив из символов этой строки - C++
как? заранее спасибо

Определить местоположение символа первой строки, который первым не совпал с одним из символов второй строки - C++
помогите написать прогу &quot;Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить местоположение символа первой строки,...

Сформировать строку, считая числа начальной строки соответствующими ASCII-кодами символов результирующей строки - C++
Доброго времени суток! Прошу помощи. Дана строка в виде последовательности разделенных запятыми натуральных чисел 32 ... 255....

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

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
1701 / 1194 / 494
Регистрация: 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
Yandex
Объявления
01.04.2013, 07:55     генерация строки из символов А,В,С
Ответ Создать тему
Опции темы

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