#include <stdio.h>
/* Patrick Andrade */
/* Final Question 1 */
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) {
/* Beer - Budweiser */
struct Beer myBeer = {
1001, {8, 10, 2025}, "American Lager", "Budweiser", 5.0,
{"Anheuser-Busch", "St. Louis", "Missouri", "USA"},
{12.0, "oz"}, {1.99, "USD"}, 12, 145, 500, 6, 0
};
/* Wine - Beringer */
struct Wine myWine = {
2001, "Cabernet Sauvignon", "Beringer", 2020, 14.5,
"Napa Valley",
{"Beringer Vineyards", "St. Helena", "California", "USA"},
{750.0, "ml"}, {24.99, "USD"}, "Dry", 18, 120, 0
};
/* Spirits - Scotch */
struct Spirits mySpirit = {
3001, "Scotch Whisky", "Johnnie Walker", 12, 40.0,
{"Johnnie Walker Distillery", "Kilmarnock", "Ayrshire", "Scotland"},
{750.0, "ml"}, {45.00, "USD"}, "Oak", 80, 80, 1
};
/* Output */
printf("Beer:\n Brand: %s\n Type: %s\n ABV: %.1f%%\n Price: %.2f %s\n\n", myBeer.brand, myBeer.type, myBeer.abv,
myBeer.pricing.price, myBeer.pricing.currency);
printf("Wine:\n Brand: %s\n Varietal: %s\n ABV: %.1f%%\n Price: %.2f %s\n\n", myWine.brand, myWine.varietal, myWine.abv,
myWine.pricing.price, myWine.pricing.currency);
printf("Spirit:\n Brand: %s\n Type: %s\n ABV: %.1f%%\n Price: %.2f %s\n", mySpirit.brand, mySpirit.type, mySpirit.abv,
mySpirit.pricing.price, mySpirit.pricing.currency);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovKiBQYXRyaWNrIEFuZHJhZGUgKi8KLyogRmluYWwgUXVlc3Rpb24gMSAqLwpzdHJ1Y3QgZGF0ZSB7IGludCBtb250aDsgaW50IGRhdGU7IGludCB5ZWFyOyB9OwoKc3RydWN0IHByb2R1Y2VyIHsKICAgIGNoYXIgbmFtZVsxMDBdOwogICAgY2hhciBjaXR5WzUwXTsKICAgIGNoYXIgc3RhdGVbNTBdOwogICAgY2hhciBjb3VudHJ5WzUwXTsKfTsKCnN0cnVjdCB2b2x1bWUgewogICAgZmxvYXQgYW1vdW50OwogICAgY2hhciB1bml0WzEwXTsKfTsKCnN0cnVjdCBwcmljZUluZm8gewogICAgZmxvYXQgcHJpY2U7CiAgICBjaGFyIGN1cnJlbmN5WzEwXTsKfTsKCi8qIEJhc2Ugc3RydWN0dXJlcyAqLwpzdHJ1Y3QgQmVlciB7CiAgICBpbnQgc3RvY2tJRDsKICAgIHN0cnVjdCBkYXRlIGJvcm5PbkRhdGU7CiAgICBjaGFyIHR5cGVbNzBdOwogICAgY2hhciBicmFuZFsxMDBdOwogICAgZmxvYXQgYWJ2OwogICAgc3RydWN0IHByb2R1Y2VyIGJyZXdlcnk7CiAgICBzdHJ1Y3Qgdm9sdW1lIGNvbnRhaW5lcjsKICAgIHN0cnVjdCBwcmljZUluZm8gcHJpY2luZzsKICAgIGludCBpYnU7CiAgICBpbnQgY2Fsb3JpZXM7CiAgICBpbnQgc3RvY2tRdWFudGl0eTsKICAgIGludCBzaGVsZkxpZmVNb250aHM7CiAgICBpbnQgaXNDcmFmdDsKfTsKCnN0cnVjdCBXaW5lIHsKICAgIGludCBzdG9ja0lEOwogICAgY2hhciB2YXJpZXRhbFs3MF07CiAgICBjaGFyIGJyYW5kWzEwMF07CiAgICBpbnQgdmludGFnZTsKICAgIGZsb2F0IGFidjsKICAgIGNoYXIgcmVnaW9uWzcwXTsKICAgIHN0cnVjdCBwcm9kdWNlciB3aW5lcnk7CiAgICBzdHJ1Y3Qgdm9sdW1lIGNvbnRhaW5lcjsKICAgIHN0cnVjdCBwcmljZUluZm8gcHJpY2luZzsKICAgIGNoYXIgc3dlZXRuZXNzWzIwXTsKICAgIGludCBhZ2luZ01vbnRoczsKICAgIGludCBzdG9ja1F1YW50aXR5OwogICAgaW50IGlzU3BhcmtsaW5nOwp9OwoKc3RydWN0IFNwaXJpdHMgewogICAgaW50IHN0b2NrSUQ7CiAgICBjaGFyIHR5cGVbNTBdOwogICAgY2hhciBicmFuZFsxMDBdOwogICAgaW50IGFnZTsKICAgIGZsb2F0IGFidjsKICAgIHN0cnVjdCBwcm9kdWNlciBkaXN0aWxsZXJ5OwogICAgc3RydWN0IHZvbHVtZSBjb250YWluZXI7CiAgICBzdHJ1Y3QgcHJpY2VJbmZvIHByaWNpbmc7CiAgICBjaGFyIGJhcnJlbFR5cGVbNTBdOwogICAgaW50IHByb29mOwogICAgaW50IHN0b2NrUXVhbnRpdHk7CiAgICBpbnQgaXNJbXBvcnRlZDsKfTsKCi8qIFRlc3QgbWFpbiBmdW5jdGlvbiAqLwppbnQgbWFpbih2b2lkKSB7CiAgICAvKiBCZWVyIC0gQnVkd2Vpc2VyICovCiAgICBzdHJ1Y3QgQmVlciBteUJlZXIgPSB7CiAgICAgICAgMTAwMSwgezgsIDEwLCAyMDI1fSwgIkFtZXJpY2FuIExhZ2VyIiwgIkJ1ZHdlaXNlciIsIDUuMCwKICAgICAgICB7IkFuaGV1c2VyLUJ1c2NoIiwgIlN0LiBMb3VpcyIsICJNaXNzb3VyaSIsICJVU0EifSwKICAgICAgICB7MTIuMCwgIm96In0sIHsxLjk5LCAiVVNEIn0sIDEyLCAxNDUsIDUwMCwgNiwgMAogICAgfTsKCiAgICAvKiBXaW5lIC0gQmVyaW5nZXIgKi8KICAgIHN0cnVjdCBXaW5lIG15V2luZSA9IHsKICAgICAgICAyMDAxLCAiQ2FiZXJuZXQgU2F1dmlnbm9uIiwgIkJlcmluZ2VyIiwgMjAyMCwgMTQuNSwKICAgICAgICAiTmFwYSBWYWxsZXkiLAogICAgICAgIHsiQmVyaW5nZXIgVmluZXlhcmRzIiwgIlN0LiBIZWxlbmEiLCAiQ2FsaWZvcm5pYSIsICJVU0EifSwKICAgICAgICB7NzUwLjAsICJtbCJ9LCB7MjQuOTksICJVU0QifSwgIkRyeSIsIDE4LCAxMjAsIDAKICAgIH07CgogICAgLyogU3Bpcml0cyAtIFNjb3RjaCAqLwogICAgc3RydWN0IFNwaXJpdHMgbXlTcGlyaXQgPSB7CiAgICAgICAgMzAwMSwgIlNjb3RjaCBXaGlza3kiLCAiSm9obm5pZSBXYWxrZXIiLCAxMiwgNDAuMCwKICAgICAgICB7IkpvaG5uaWUgV2Fsa2VyIERpc3RpbGxlcnkiLCAiS2lsbWFybm9jayIsICJBeXJzaGlyZSIsICJTY290bGFuZCJ9LAogICAgICAgIHs3NTAuMCwgIm1sIn0sIHs0NS4wMCwgIlVTRCJ9LCAiT2FrIiwgODAsIDgwLCAxCiAgICB9OwoKICAgIC8qIE91dHB1dCAqLwogICAgcHJpbnRmKCJCZWVyOlxuIEJyYW5kOiAlc1xuIFR5cGU6ICVzXG4gQUJWOiAlLjFmJSVcbiBQcmljZTogJS4yZiAlc1xuXG4iLAogICAgICAgICAgIG15QmVlci5icmFuZCwgbXlCZWVyLnR5cGUsIG15QmVlci5hYnYsCiAgICAgICAgICAgbXlCZWVyLnByaWNpbmcucHJpY2UsIG15QmVlci5wcmljaW5nLmN1cnJlbmN5KTsKCiAgICBwcmludGYoIldpbmU6XG4gQnJhbmQ6ICVzXG4gVmFyaWV0YWw6ICVzXG4gQUJWOiAlLjFmJSVcbiBQcmljZTogJS4yZiAlc1xuXG4iLAogICAgICAgICAgIG15V2luZS5icmFuZCwgbXlXaW5lLnZhcmlldGFsLCBteVdpbmUuYWJ2LAogICAgICAgICAgIG15V2luZS5wcmljaW5nLnByaWNlLCBteVdpbmUucHJpY2luZy5jdXJyZW5jeSk7CgogICAgcHJpbnRmKCJTcGlyaXQ6XG4gQnJhbmQ6ICVzXG4gVHlwZTogJXNcbiBBQlY6ICUuMWYlJVxuIFByaWNlOiAlLjJmICVzXG4iLAogICAgICAgICAgIG15U3Bpcml0LmJyYW5kLCBteVNwaXJpdC50eXBlLCBteVNwaXJpdC5hYnYsCiAgICAgICAgICAgbXlTcGlyaXQucHJpY2luZy5wcmljZSwgbXlTcGlyaXQucHJpY2luZy5jdXJyZW5jeSk7CgogICAgcmV0dXJuIDA7Cn0=