#include <stdio.h>
/* Supporting structures */
struct date { int month; int date; int year; };
struct producer {
char name[100];
char city[50];
char state[50];
char country[50];
};
struct volume {
float amount;
char unit[10];
};
struct priceInfo {
float price;
char currency[10];
};
/* Base structures */
struct Beer {
int stockID;
struct date bornOnDate;
char type[70];
char brand[100];
float abv;
struct producer brewery;
struct volume container;
struct priceInfo pricing;
int ibu;
int calories;
int stockQuantity;
int shelfLifeMonths;
int isCraft;
};
struct Wine {
int stockID;
char varietal[70];
char brand[100];
int vintage;
float abv;
char region[70];
struct producer winery;
struct volume container;
struct priceInfo pricing;
char sweetness[20];
int agingMonths;
int stockQuantity;
int isSparkling;
};
struct Spirits {
int stockID;
char type[50];
char brand[100];
int age;
float abv;
struct producer distillery;
struct volume container;
struct priceInfo pricing;
char barrelType[50];
int proof;
int stockQuantity;
int isImported;
};
/* Test main function */
int main(void) {
struct Beer myBeer = {
1001, {8, 10, 2025}, "IPA", "Sample Brew", 6.5,
{"Sample Brewery", "City", "State", "Country"},
{12.0, "oz"}, {5.99, "USD"}, 45, 180, 50, 6, 1
};
printf("Beer: %s (%s), ABV: %.1f%%, Price: %.2f %s\n", myBeer.brand, myBeer.type, myBeer.abv,
myBeer.pricing.price, myBeer.pricing.currency);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovKiBTdXBwb3J0aW5nIHN0cnVjdHVyZXMgKi8Kc3RydWN0IGRhdGUgeyBpbnQgbW9udGg7IGludCBkYXRlOyBpbnQgeWVhcjsgfTsKCnN0cnVjdCBwcm9kdWNlciB7CiAgICBjaGFyIG5hbWVbMTAwXTsKICAgIGNoYXIgY2l0eVs1MF07CiAgICBjaGFyIHN0YXRlWzUwXTsKICAgIGNoYXIgY291bnRyeVs1MF07Cn07CgpzdHJ1Y3Qgdm9sdW1lIHsKICAgIGZsb2F0IGFtb3VudDsKICAgIGNoYXIgdW5pdFsxMF07Cn07CgpzdHJ1Y3QgcHJpY2VJbmZvIHsKICAgIGZsb2F0IHByaWNlOwogICAgY2hhciBjdXJyZW5jeVsxMF07Cn07CgovKiBCYXNlIHN0cnVjdHVyZXMgKi8Kc3RydWN0IEJlZXIgewogICAgaW50IHN0b2NrSUQ7CiAgICBzdHJ1Y3QgZGF0ZSBib3JuT25EYXRlOwogICAgY2hhciB0eXBlWzcwXTsKICAgIGNoYXIgYnJhbmRbMTAwXTsKICAgIGZsb2F0IGFidjsKICAgIHN0cnVjdCBwcm9kdWNlciBicmV3ZXJ5OwogICAgc3RydWN0IHZvbHVtZSBjb250YWluZXI7CiAgICBzdHJ1Y3QgcHJpY2VJbmZvIHByaWNpbmc7CiAgICBpbnQgaWJ1OwogICAgaW50IGNhbG9yaWVzOwogICAgaW50IHN0b2NrUXVhbnRpdHk7CiAgICBpbnQgc2hlbGZMaWZlTW9udGhzOwogICAgaW50IGlzQ3JhZnQ7Cn07CgpzdHJ1Y3QgV2luZSB7CiAgICBpbnQgc3RvY2tJRDsKICAgIGNoYXIgdmFyaWV0YWxbNzBdOwogICAgY2hhciBicmFuZFsxMDBdOwogICAgaW50IHZpbnRhZ2U7CiAgICBmbG9hdCBhYnY7CiAgICBjaGFyIHJlZ2lvbls3MF07CiAgICBzdHJ1Y3QgcHJvZHVjZXIgd2luZXJ5OwogICAgc3RydWN0IHZvbHVtZSBjb250YWluZXI7CiAgICBzdHJ1Y3QgcHJpY2VJbmZvIHByaWNpbmc7CiAgICBjaGFyIHN3ZWV0bmVzc1syMF07CiAgICBpbnQgYWdpbmdNb250aHM7CiAgICBpbnQgc3RvY2tRdWFudGl0eTsKICAgIGludCBpc1NwYXJrbGluZzsKfTsKCnN0cnVjdCBTcGlyaXRzIHsKICAgIGludCBzdG9ja0lEOwogICAgY2hhciB0eXBlWzUwXTsKICAgIGNoYXIgYnJhbmRbMTAwXTsKICAgIGludCBhZ2U7CiAgICBmbG9hdCBhYnY7CiAgICBzdHJ1Y3QgcHJvZHVjZXIgZGlzdGlsbGVyeTsKICAgIHN0cnVjdCB2b2x1bWUgY29udGFpbmVyOwogICAgc3RydWN0IHByaWNlSW5mbyBwcmljaW5nOwogICAgY2hhciBiYXJyZWxUeXBlWzUwXTsKICAgIGludCBwcm9vZjsKICAgIGludCBzdG9ja1F1YW50aXR5OwogICAgaW50IGlzSW1wb3J0ZWQ7Cn07CgovKiBUZXN0IG1haW4gZnVuY3Rpb24gKi8KaW50IG1haW4odm9pZCkgewogICAgc3RydWN0IEJlZXIgbXlCZWVyID0gewogICAgICAgIDEwMDEsIHs4LCAxMCwgMjAyNX0sICJJUEEiLCAiU2FtcGxlIEJyZXciLCA2LjUsCiAgICAgICAgeyJTYW1wbGUgQnJld2VyeSIsICJDaXR5IiwgIlN0YXRlIiwgIkNvdW50cnkifSwKICAgICAgICB7MTIuMCwgIm96In0sIHs1Ljk5LCAiVVNEIn0sIDQ1LCAxODAsIDUwLCA2LCAxCiAgICB9OwoKICAgIHByaW50ZigiQmVlcjogJXMgKCVzKSwgQUJWOiAlLjFmJSUsIFByaWNlOiAlLjJmICVzXG4iLAogICAgICAgICAgIG15QmVlci5icmFuZCwgbXlCZWVyLnR5cGUsIG15QmVlci5hYnYsCiAgICAgICAgICAgbXlCZWVyLnByaWNpbmcucHJpY2UsIG15QmVlci5wcmljaW5nLmN1cnJlbmN5KTsKCiAgICByZXR1cm4gMDsKfQ==