|
0 / 0 / 0
Регистрация: 06.12.2013
Сообщений: 4
|
|
Программная работа с множествами путем использования битовых флагов06.12.2013, 16:09. Показов 1108. Ответов 0
Метки нет (Все метки)
ПОМОГИТЕ препод составил задачи, ни чего не объяснил толком я в С++ пока ноль
как я понял препода надо сделать 2 TEdit и 3 TListBox, 3 кнопки. при нажатии кнопок 1 и 2 значения из 1 и 2 TEdit по строчно должны записыватся в ListBox1 и ListBox2 а при нажатии на 3 кнопку он должен их сравнить в ListBox3 вот что дал нам препод Программная работа с множествами путем использования битовых флагов Простейшая реализация работы множествами может выглядеть следующим образом. Пусть имеется множество элементов, отличительным признаком каждого из которых является его номер в условной последовательности: 1, 2, 3 и т.д. Тогда присутствие в множестве i-го элемента можно обозначить единицей в (i-1)-й позиции двоичной последовательности, а отсутствие данного элемента – нулем в той же позиции. В качестве двоичной последовательности можно использовать просто целое число. Недостатком такого подхода будет только ограничение количества элементов множества. Например, если взять число типа long в языках C/C++/C#/Java, то им можно представить множество максимальной мощностью 32 элемента. Для начала нужно создать множество, объявив переменную: long set; и проинициализировать его («опустошить»): set = 0; Установка «наличия» элемента в множестве выполняется путем выполнения операции дизъюнкции («ИЛИ») с некоторым унарным кодом (т.е. с битовой последовательностью, содержащей всего одну единицу). Например, дизъюнкция с последовательностью 00000000000000000000000000000100 позволит добавить в множество 3-й элемент, а с последовательностью 00000000000000000000000000100000 – 6-й элемент. Сформировать унарный код из номера элемента можно в языках C/C++/C#/Java при помощи операции двоичного сдвига: 1 << (num-1) Здесь единица сдвигается на num-1 разрядов влево. Операция дизъюнкции для указанных языков может быть выполнена так: set |= 1 << (num-1); Для того, чтобы удалить элемент из множества, необходимо выполнить операцию конъюнкции с инверсией унарного кода. То есть при выполнении операции конъюнкции на исходное число, представляющее собой последовательность битовых флагов, накладывается маска, содержащая всего один ноль, обнуляющий таким образом один разряд исходной последовательности. В названных языках бинарное «И» обозначается символом “&”, а бинарная инверсия – символом “~”. Поэтому установка флага наличия элемента в множестве выполняется следующим образом: set &= ~(1L << (num-1)); Проверка наличия элемента в множестве выполняется при помощи бинарного «И»: for (int i = 0, flag = 1; i < 32; i++, flag <<= 1) { if (set & flag) { ListBox1->Items->Add(IntToStr(i+1) + "-é"); } } Здесь ListBox1 – компонент типа TListBox, в который заносится информация о наличии элементов множества. Задание. Реализовать форму с полем ввода номера элемента множества (TEdit), кнопками (TButton) добавления элемента в два множества и двумя списками для отображения элементов множеств. Кроме того, реализовать функции согласно варианту. Вариант 1. Удаление элемента из множества. Пересечение множеств. Вариант 2. Удаление элемента из множества. Объединение множеств. Вариант 3. Удаление элемента из множества. Симметрическая разность множеств. Вариант 4. Удаление элемента из множества. Разность множеств. Вариант 5. Удаление элемента из множества. Нахождение дополнения к множеству. Вариант 6. Пересечение множеств. Нахождение дополнения к множеству. Вариант 7. Объединение множеств. Симметрическая разность множеств. Вариант 8. Разность множеств. Пересечение множеств. Вариант 9. Объединение множеств. Нахождение дополнения к множеству. Вариант 10. Разность множеств. Симметрическая разность множеств.
0
|
|
| 06.12.2013, 16:09 | |
|
Ответы с готовыми решениями:
0
Проверка битовых флагов
Вывод значения регистра флагов в двоичной системе счисления без использования прерывной DOS и BIOS |
| 06.12.2013, 16:09 | |
|
Помогаю со студенческими работами здесь
1
Провести операцию над множествами без использования стандартных алгоритмов Ошибка в битовых сдвигах/битовых масках
Подписка на события путём использования аксессоров Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
|
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
На примере нетипового документа разработанного в конфигурации КА2.
В качестве источника данных указан регистр накопления, в который записываются данные о. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|