Разминка: сформировать последовательность без трех подстрок подряд.

Тема в разделе "LANGS.C", создана пользователем Ation, 11 ноя 2010.

  1. Ation

    Ation New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2005
    Сообщения:
    92
    Адрес:
    Zaporozhie
    а если так?

    Код (Text):
    1. char *str = (char*)malloc(length + 1);
    2. int i;
    3.  
    4. str[0] = '0';
    5. str[length] = 0;
    6.  
    7. for (i=0; i<length / 2; i++) {
    8.     str[i+i] = str[i];
    9.     str[i+i+1] = str[i]^1;
    10. }
    Я и не говорил, что приведу самый оптимальный код, просто это самое понятное решение алгоритма. (ведь правда проще понять чот будет на выходе по старому варианту?)
     
  2. Ation

    Ation New Member

    Публикаций:
    0
    Регистрация:
    6 авг 2005
    Сообщения:
    92
    Адрес:
    Zaporozhie
    qqwe
    После исправления ошибок и прочего код по прежнему не работает (результаты с кучей нулей в начале) и не выдает строку заданной длины. (Даже если склеивать валидные результаты)
     
  3. qqwe

    qqwe New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2009
    Сообщения:
    2.914
    Ation
    га?
    вы разве не заметили, что биты пакуются в дворд и этот дворд выводится (print_bits) полностью? сделайте контейнер желаемой длины и выводите значащие.
    склеивать куски напрямую нельзя. всвязи с тем, что я дополнил задание случайностью битов и последовательность может быть разной предельной длины. можно доработать корректировку, но мне уже не интересно