close

Вход

Забыли?

вход по аккаунту

?

Лабораторная работа 4 (3)

код для вставкиСкачать
 Лабораторная работа 4
Генерация подмножеств
Задание. Задано целое положительное число n, которое представляет собой мощность некоторого множества. Требуется с минимальными трудозатратами генерировать все подмножества этого множества, для чего каждое последующее подмножество должно получаться из предыдущего путем добавления или удаления только одного элемента. Множество и все его подмножества представляются битовой шкалой. Для генерации использовать алгоритм построения бинарного кода Грея.
В качестве результата выводить построчно каждое из подмножеств (в виде битовой шкалы), сопровождая их порядковыми номерами. В случае большого количества результирующих строк (превышающего размер экрана) выполнять поэкранную выдачу, а также осуществлять их вывод в файл с выдачей на экран сообщения для пользователя - имя файла, его местонахождение.
Алгоритм построения бинарного кода Грея
Решение:
1. Описание программы:
Основными переменными являются массивы целых чисел B- хранит в себе строчку кода Грея,A - для временных преобразований.
Основными функциями являются: newElement(), GGen(),
Функция newElement () служит для ввода степени 2 ки для получения кода Грея.
Функция GGen() организует последовательный вывод на экран кодов Грея;
Алгоритм решения задачи: Вводим степень n, далее программа начинает перемещать 1ци и добавлять новые в соответствии с кодом Грея. 2. Текст программы:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int A[256];
int B[256];
void GGen (int n, int A[])
{
int i,j,p,q=0,w=0;
for (i=0; i<n; i++)
{
A[i] = 0;
}
i = 0;
do
{
for (j=0; j<n; j++)
{
B[q]=A[j];
q++;
}
i++;
p = 0;
j = i;
while ( (j & 1) == 0)
{
j = j/2;
p++; }
if ( p < n ) A[p] = !A[p];
} while ( p < n);
for(i=0;i<q;)
{
i=i+n;
for(j=i-1;j>=w;j--)
{
printf("%2d",B[j]);
}
w=w+n;
printf("\n");
} }
void newElement()
{
int n;
scanf("%d",&n);
if(n<0)
{
printf("Element mnogestva ne moget bit otrecatelen ili raven 0\n");
newElement();
}
else
{
GGen(n, A);
}
}
int main()
{
clrscr();
printf("Vvedite n \n");
newElement();
getch();
}
3. Описание входных данных:
Вводим n = 4;
Результат:
0 0 0 0
0 0 0 1
0 0 1 1
0 0 1 0
0 1 1 0
0 1 0 1
0 1 0 0
1 1 0 0
1 1 0 1
1 1 0 1
1 1 1 1
1 1 1 0
1 0 1 0
1 0 1 1
1 0 0 1
1 0 0 0
Документ
Категория
Рефераты
Просмотров
247
Размер файла
40 Кб
Теги
работа, лабораторная
1/--страниц
Пожаловаться на содержимое документа