На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Название темы должно быть информативным !
Прежде чем задать вопрос, воспользуйтесь Поиском. и проверьте в FAQ (ЧАВО) Паскаля
Чтобы получить вразумительный ответ, подробно опишите проблему: что надо сделать, что не получается и номер ошибки (если есть), которую выводит компилятор.
Для вставки кода ваших программ используйте, пожалуйста, кнопку СODE=pas или выпадающий список СODE для других языков (подсветка синтаксиса).
[!] Как правильно задавать вопросы | Руководство по языку B.Pascal 7 & Objects/LR | Borland Pascal. Руководство пользователя
Модераторы: volvo877
  
> Генерирование всех подмножеств n-элементного множества с помощью кода Грея. , Написать программу, выполняющую генерирование всех подмножеств n – элементного множества с помощью кода Грея.
    7.6. Описание алгоритма
    Все подмножества данного множества представляются бинарными последовательностями, получаемыми с помощью кодов Грея. В данном методе каждое последующее множество получается из предыдущего добавлением или удалением одного элемента. Опирается он на следующий факт. Если последовательность C1, C2…Cm содержит все m бинарных последовательностей длины k (m=2^k), причем Ci отличается от Ci+1 в точности в одной координате (I=1,..m-1), эта последовательность C1 0, C2 0,…,Cm 0, Cm 1, Cm-1 1 содержит все бинарные последовательности длины k+1, причем каждые 2 соседние последовательности будут отличаться в точности в одной координате. Этим непосредственно определяется некоторый алгоритм рекуррентного построения последовательности всех подмножеств. Получаемая этим способом последовательность C1, C2, …, Cs (S=2^n), называется бинарным кодом Грея порядка n.

    7.7. Текст программы
    program grey;
    var n,i,q,k,j:byte;
    nn:word;
    st:string;
    begin
    writeln('Введите n:');
    readln(n);
    st:='0';
    nn:=1;

    for j:=1 to (nn-1) do begin
    q:=0; k:=j;

    k:=k div 2; q:=q+1;
    end;
    if st[length(st)-q]='0' then st[length(st)-q]:='1' else st[length(st)-q]:='0';
    writeln(st);
    end;
    end.
      Это вопрос, ответ, или размышления?
        Это размышления и вопрос.
        Правильно ли программа написана?
        Сообщение отредактировано: nurkey -
          Нет. Достаточно уже того, что длина строки устанавливается один раз в единицу, а потом обращения идут к разным её символам.

          Какой метод генерации кодов Грея было задумано использовать?
          Вот метод, который нетрудно применить к строковому представлению (но он требует хранения сгенерированных кодов):
          http://neerc.ifmo.ru/wiki/index.php?title=...%80%D0%B5%D1%8F
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0218 ]   [ 16 queries used ]   [ Generated: 28.03.24, 20:24 GMT ]