Программа представлена на скрине.
Далее под константой будет пониматься макроопределение (символическая константа)
Были созданы константы для обозначения флагов ингредиентов. Им даны осмысленные названия. Также была создана константа для формирования пустого заказа.
int ingredientsCount(Pizza&); - возвращает количество ингредиентов.
void addCheese(Pizza&); - добавляет в заказ сыр
void removeOnion(Pizza&); - убирает из заказа лук
void togglePineapple(Pizza&); - переключает ананасы
void addOnionIfMushroomsExist(Pizza&); - добавляет лук если есть грибы
Количество информации определяется по формулам Ральфа Хартли и Клода Шеннона.
1)
а) Формула Хартли:
Получения информации рассматривается как выбор одного сообщения из конечного наперёд заданного множества из N равновероятных сообщений, а количество информации I, содержащееся в выбранном сообщении, определял как двоичный логарифм N.
I = log2N
б) Формула Шеннона:
Учитывает возможную неодинаковую вероятность сообщений в наборе
I = — ( p^1log^2 p1 + p2 log^2 p2 + . . . + p^N log^2 p^N),
где p^i — вероятность того, что именно i-е сообщение выделено в наборе из N сообщений.
Считаем по фомуле Хартли
подсчитаем N,
N = 31 * 12 = 372 (дней 31) или 30 * 12 =360 (дней 30)
Сначала вычислим 2 ^ i:
2 ^ i = (31* 12) 372.
2^i = (30* 12) 360
вычислим
i = log2(372) = 8.5391 бит.
i = log2(360) = 8.4918 бит. округляем = 8.5
2)
Тоже самое, только нужно прибавить часы в сутках и получить N = (31*12*24) = 8928 (дней 31)
или
(30*12*24) = 8640 дней 30
далее
i = log2(8928) = 13.1241 бит. (31 день)
i = log2(8640) = 13.0768 бит. (30 дней)