Вопрос задан 03.10.2023 в 23:55. Предмет Информатика. Спрашивает Сурков Владимир.

Задача на побитые операции в c++ В пиццерии для заказа пиццы используют стенд заказов, на котором

посетители выбирают ингредиенты. Возможные ингредиенты: помидоры, ветчина, грибы, сыр, ананасы, креветки и лук; выбранные ингредиенты записываются в одну переменную как битовые флаги. Пункт А. Создайте константы для обозначения флагов для ингредиентов. С их помощью создайте и запишите в переменную заказ на пиццу с помидорами, ветчиной и луком. Остальные пункты. Выполняются произвольно, в любом порядке и количестве. Во всех пунктах предполагается, что в переменной pizza записан некоторый (произвольный) заказ. Пункт B. Посчитайте и выведите общее количество ингредиентов в заказе. Пункт C. В пиццерии проводится акция: во все пиццы добавляется сыр. Установите соответствующий флаг. В пиццерии закончились креветки. Сбросьте соответствующий флаг. На стенде перепутали подписи у кнопки заказа ананасов. Поменяйте соответствующий флаг на протиповоложный. Пункт D. Новая акция: каждый, заказавший грибы, получает к ним лук. Установите флаг для лука, если в заказе установлен флаг для грибов. Условные операторы if, switch, циклы и тернарная операция всё ещё запрещены.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Шевченко Катерина.

Ответ:

Программа представлена на скрине.

Далее под константой будет пониматься макроопределение (символическая константа)

Были созданы константы для обозначения флагов ингредиентов. Им даны осмысленные названия. Также была создана константа для формирования пустого заказа.

int ingredientsCount(Pizza&); - возвращает количество ингредиентов.

void addCheese(Pizza&); - добавляет в заказ сыр

void removeOnion(Pizza&); -  убирает из заказа лук

void togglePineapple(Pizza&);  - переключает ананасы

void addOnionIfMushroomsExist(Pizza&); - добавляет лук если есть грибы


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Вот пример кода на C++, который решает данную задачу:

cpp
#include <iostream> // Пункт А const int TOMATO = 1; const int HAM = 1 << 1; const int MUSHROOM = 1 << 2; const int CHEESE = 1 << 3; const int PINEAPPLE = 1 << 4; const int SHRIMP = 1 << 5; const int ONION = 1 << 6; int main() { // Пункт А int pizza = TOMATO | HAM | ONION; // Пункт B int ingredientCount = __builtin_popcount(pizza); std::cout << "Общее количество ингредиентов в заказе: " << ingredientCount << std::endl; // Пункт C pizza |= CHEESE; // Добавляем сыр pizza &= ~SHRIMP; // Убираем креветки pizza ^= PINEAPPLE; // Переключаем флаг для ананасов // Пункт D pizza |= ((pizza & MUSHROOM) != 0) ? ONION : 0; // Если есть грибы, добавляем лук // Выводим результат std::cout << "Итоговый заказ на пиццу: " << pizza << std::endl; return 0; }

Обратите внимание на использование битовых операций для установки, сброса и переключения флагов. __builtin_popcount используется для подсчета установленных битов и определения общего количества ингредиентов в заказе.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос