#include <stdio.h>

void buildingCarbonFootprint(void)
{
    double electricity;
    double gas;
    double footprint;

    printf("\nBuilding carbon footprint\n");

    printf("Enter electricity consumption in kWh: ");
    scanf("%lf", &electricity);

    printf("Enter gas consumption in units: ");
    scanf("%lf", &gas);

    footprint =
        electricity * 0.45 +
        gas * 2.2;

    printf("The building carbon footprint is %.2f kg CO2\n",
           footprint);
}

void carCarbonFootprint(void)
{
    double distance;
    double fuelConsumption;
    double footprint;

    printf("\nCar carbon footprint\n");

    printf("Enter distance traveled in kilometers: ");
    scanf("%lf", &distance);

    printf("Enter fuel consumption in liters: ");
    scanf("%lf", &fuelConsumption);

    footprint = fuelConsumption * 2.31;

    printf("The car carbon footprint is %.2f kg CO2\n",
           footprint);

    printf("Distance traveled = %.2f km\n",
           distance);
}

void bicycleCarbonFootprint(void)
{
    double distance;
    double footprint;

    printf("\nBicycle carbon footprint\n");

    printf("Enter distance traveled in kilometers: ");
    scanf("%lf", &distance);

    /*
       The bicycle itself does not directly burn fuel,
       so its direct carbon footprint is considered zero.
    */

    footprint = 0;

    printf("The bicycle carbon footprint is %.2f kg CO2\n",
           footprint);

    printf("Distance traveled = %.2f km\n",
           distance);
}

int main(void)
{
    void (*carbonFootprints[3])(void) =
    {
        buildingCarbonFootprint,
        carCarbonFootprint,
        bicycleCarbonFootprint
    };

    int choice;

    printf("Enter 0 to calculate building carbon footprint\n");
    printf("Enter 1 to calculate car carbon footprint\n");
    printf("Enter 2 to calculate bicycle carbon footprint\n");

    scanf("%d", &choice);

    if (choice < 0 || choice > 2)
    {
        printf("Invalid choice.\n");
    }
    else
    {
        (*carbonFootprints[choice])();
    }

    return 0;
}