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

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

Войти
Регистрация
Восстановить пароль
 
danlex-corp
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 22
#1

Создание n-символьной последовательности, состоящей из совокупности 3 символов - C++

08.12.2009, 02:45. Просмотров 1045. Ответов 6
Метки нет (Все метки)

Помогите пожалуйста!


Надо написать программу создания n-символьной последовательности, состоящей из совакупности 3 символов (например: "0", "1", "2" или "a", "b", "с" ), в которой нет двух смежных идентичных последовательностей. Для n=11 последовательность может иметь вид: "010201120210".

Пишу в Си.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2009, 02:45     Создание n-символьной последовательности, состоящей из совокупности 3 символов
Посмотрите здесь:

Поиск слов в строке состоящей из русских символов. C++
В строке, состоящей из групп нулей и единиц, подсчитать количество символов в самой длинной группе. C++
Найти координаты первого вхождения в заданную строку подстроки, состоящей из двух одинаковых заданных символов C++
C++ В строке, состоящей и нулей и единиц, подсчитать количество символов в самой длинной группе
Считывание через ifstream строки состоящей из чисел и символов из файла C++
[Символьная строка] После ввода количества символов в символьной строке, программа прекращает работу C++
C++ В строке, состоящей из алфавитно-цифровых символов, переместить все цифры в начало
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
08.12.2009, 06:59     Создание n-символьной последовательности, состоящей из совокупности 3 символов #2
Цитата Сообщение от danlex-corp Посмотреть сообщение
Пишу в Си.
показывай что написал.
тебе алгоритм нужен построения или проблема именно в реализации?

p.s. уточни диапазон n
danlex-corp
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 22
08.12.2009, 10:37  [ТС]     Создание n-символьной последовательности, состоящей из совокупности 3 символов #3
Алгоритм не могу понять, а код я думаю сам напишу. хотя если не трудно можно и код.

Добавлено через 1 минуту
диапозон n я думаю наверное от 3 до 100 приблизительно, но к сожалению всё задача написана на верху, мне больше ничего не дано.
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
08.12.2009, 11:34     Создание n-символьной последовательности, состоящей из совокупности 3 символов #4
1. проверяешь количество чисел в последовательности, если нечётное то произвольно выбираешь значения символа по середине, если то произвольно выбираешь значения двух символов из середины, только они должны быть равны (в твоём примере ...11... кстати у тебя пример для n=12)
2. выбираешь значения символов примыкающих или иначе смежных с символами из середины последовательности по следующему правилу. символ не равен символы середины и символы не равны друг другу. то есть если выбираешь символ слева от середины равный 2, ...211... то символ справа от середины 0 (0!=1, 0!=2) и того ...2110... (ВАЗ получился )
3. аналогично пункту 2. выбираем значения символов смежных к символам определённым в п.2

проверяй
danlex-corp
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 22
08.12.2009, 12:47  [ТС]     Создание n-символьной последовательности, состоящей из совокупности 3 символов #5
С трудом понимается. можно пример больше написать. не въеду прямо ваще. И по возможности еще код написать.

Добавлено через 3 минуты
И разве не надо использовать 3 символа в совакупности, а не прибавлять только по одному?! Или я просто конкретно не понимаю задачу.
TanT
эволюционирую потихоньку
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
08.12.2009, 13:54     Создание n-символьной последовательности, состоящей из совокупности 3 символов #6
эти вопросы ты лучше преподу задай, я понял решение задания как описал выше, но, без сомнения, трактовать можно твою задачу по разному. уточняй у того кто задал.

про группировку символов по 3 ничего не сказано в условии. Я специально пытался уточнить значения n.

код писать не когда, занят я конвертацией часов в рубли.
что-то мелкое ещё поправить можно, но решать целиком увы.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2009, 22:50     Создание n-символьной последовательности, состоящей из совокупности 3 символов
Еще ссылки по теме:

В строке, состоящей из алфавитно-цифровых символов, переместить все буквы в ее начало C++
В строке, состоящей из алфавитно-цифровых символов, переместить все буквы в ее начало C++
C++ В заданной символьной строке, содержащей две точки, определить количество символов между точками
В заданной символьной строке, состоящей из букв и чисел, найти сумму чисел C++
C++ Определить количество чисел в наиболее длинной последовательности состоящей из нулей

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

Или воспользуйтесь поиском по форуму:
danlex-corp
0 / 0 / 0
Регистрация: 14.10.2009
Сообщений: 22
08.12.2009, 22:50  [ТС]     Создание n-символьной последовательности, состоящей из совокупности 3 символов #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
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
67
68
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
 
char rnds(char n, char p)
 {
  randomize() ;
  char i;
  if(p<0)
   {
    i=random(2);
    if(i==0)return 'a';
    else return 'c';
   }
  else
   {
    i=random(n)+p;
    switch (i)
     {
      case 0:return 'a';break;
      case 1:return 'b';break;
      case 2:return 'c';break;
     }
   }
 }
 
void main()
 {
  char c[200];int l,r,n,p=0;clrscr();
  randomize();
  printf("Введите число символов в последовательности (n)");
  scanf("%d",&n);
  if(n%2==0)
   {
    l=n/2;
    c[l]=c[l-1]=rnds(3,p);
    l=l-2;r=l+1;
   }
  else
   {
    l=n/2;r=l+2;
    c[l+1]=rnds(3,p);
   }
  for(;l>0||r<n;l--,r++)
   {
    switch (c[l+1])
     {
      case 'a':p=1;break;
      case 'b':p=-1;break;
      case 'c':p=0;break;
     }
    c[l]=rnds(2,p);
    if(c[r-1]!='a'&&c[l]!='a')
     c[r]='a';
    else
     {
      if(c[r-1]!='b'&&c[l]!='b')
       c[r]='b';
      else
        if(c[r-1]!='c'&&c[l]!='c')
        c[r]='c';
     }
   }
   c[n]='\0';
    printf("\n%s",c);
   getch();
 }
В чём баги?

Добавлено через 39 минут
Исходное задание написал не верно.
Цитата Сообщение от danlex-corp Посмотреть сообщение
Для n=11 последовательность может иметь вид: "010201120210".
Правильно 01020120210.
Yandex
Объявления
08.12.2009, 22:50     Создание n-символьной последовательности, состоящей из совокупности 3 символов
Ответ Создать тему
Опции темы

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