#include <iostream>
#include <string>

using namespace std;

/*
 * volumeDrink - objem napoje je v milimetrech
 * contentAlcohol - obsah alkoholu
 * 0.8 je hustota ethanolu
 * - vraci vysledek v [g]
 */
static float WeightEthanol(float volumeDrink, float contentAlcohol)
{
	return (volumeDrink * contentAlcohol * 0.8f) / 100;
}

/*
 * volumeEthanol - celkove mnozstvi etanolu v [g]
 * weightConsumer - vaha konzumenta v [kg]
 * isMale - jedna se o muze?
 * - jedna se o [g/kg]
 */
static float PerMille(float volumeEthanol, float weightConsumer, bool isMale)
{
	float r = isMale ? 0.7f : 0.6f;
	return volumeEthanol / (weightConsumer * r);
}

/*
 * weightConsumer - vaha konzumenta v [kg]
 * isMale - jedna se o muze?
 * - vraci hmotnost ethanolu v [g], ktere telo odboura za 1h na 1Kg
 */
static float EthanolEliminates(float weightConsumer, bool isMale)
{
	float beta = isMale ? 0.1f : 0.085f;
	return weightConsumer * beta;
}

struct Clovek
{
	float hmotnost, celkovyObjem, celkovyObsah;
	bool jeMuz;

	Clovek()
	{
		hmotnost = 0;
		celkovyObjem = 0;
		celkovyObsah = 0;
		jeMuz = true;
	}
};

struct Bar
{
	int vino, malePivo, velkePivo, malaKoralka, velkaKoralka;
	Clovek clovek;

	Bar()
	{
		vino = 0;
		malePivo = 0;
		velkePivo = 0;
		malaKoralka = 0;
		velkaKoralka = 0;
	}
};

int main()
{
	Bar bar;

	cout << "Jste muz nebo zena? (1/0) :: ";
	cin >> bar.clovek.jeMuz;

	cout << "Zadejte vasi hmotnost v Kg :: ";
	cin >> bar.clovek.hmotnost;

	cout << endl;
	puts("\t+-------------------------+");
	puts("\t| 1. Vino                 |");
	puts("\t| 2. Male pivo            |");
	puts("\t| 3. Velke pivo           |");
	puts("\t| 4. Mala koralka         |");
	puts("\t| 5. Velka koralka        |");
	puts("\t| ----------------------- |");
	puts("\t| 6. Konec                |");
	puts("\t+-------------------------+");
	cout << endl;
	fflush(stdin);

	char option;

	while ((option = (char)getchar()) != '6')
	{
		string alcohol;

		switch (option)
		{
		case '1':
			alcohol = "vino";
			bar.vino++;
			bar.clovek.celkovyObjem += 200;
			bar.clovek.celkovyObsah += 12;
			break;

		case '2':
			alcohol = "male pivo";
			bar.malePivo++;
			bar.clovek.celkovyObjem += 300;
			bar.clovek.celkovyObsah += 4;
			break;

		case '3':
			alcohol = "velke pivo";
			bar.velkePivo++;
			bar.clovek.celkovyObjem += 500;
			bar.clovek.celkovyObsah += 4;
			break;

		case '4':
			alcohol = "mala koralka";
			bar.malaKoralka++;
			bar.clovek.celkovyObjem += 20;
			bar.clovek.celkovyObsah += 40;
			break;

		case '5':
			alcohol = "velka koralka";
			bar.velkaKoralka++;
			bar.clovek.celkovyObjem += 50;
			bar.clovek.celkovyObsah += 40;
			break;
		}

		if (alcohol.length())
			cout << "Objednali jste si: " << alcohol << "\n\n";
	}
	cout << "Vase objednavka je:" << endl;
	cout << "   Vino: " << bar.vino << "x\n";
	cout << "   Male pivo: " << bar.malePivo << "x\n";
	cout << "   Velke pivo: " << bar.velkePivo << "x\n";
	cout << "   Mala koralka: " << bar.malaKoralka << "x\n";
	cout << "   Velka koralka: " << bar.velkaKoralka << "x\n\n";

	float hmotnostEthanolu = WeightEthanol(bar.clovek.celkovyObjem, bar.clovek.celkovyObsah);
	float promile = PerMille(hmotnostEthanolu, bar.clovek.hmotnost, bar.clovek.jeMuz);

	cout << "Vase hodnota promile je: " << promile << " !";

	fflush(stdin);
	cin.get();
	return 0;
}