Uva 10554 Solution

#include<bits/stdc++.h>
using namespace std;

int x[] = {9, 4, 4, 4, 7};
double value[5], total[5], c[5], calorie, percent;
char charcter[5];

void calculation()
{
    calorie = 0.00, percent = 0.00;

    for(int i=0; i<5; i++)
    {
        if(charcter[i] == 'C')
        {
            c[i] = value[i];
            calorie += value[i];
        }
        else if(charcter[i] == 'g')
        {
            c[i] = value[i] * x[i];
            calorie += c[i];
        }
        else if(charcter[i] == '%')
            percent += value[i];
    }

    double d = calorie/(100.00 - percent);

    for(int i=0; i<5; i++)
    {
        if(charcter[i] == '%')
        {
            c[i] = d * value[i];
        }
        total[i] += c[i];
    }
}

int main()
{
    string st;
    int i;
    while(cin >> st && st != "-")
    {
        do
        {
            for(i=0;i<5;i++)
            {
                value[i] = c[i] = 0;
                charcter[i] = '\0';
            }

            int p = st.size() - 1;
            charcter[0] = st[p];
            p--;
            int num = 0;
            for(int i=0; i<=p; i++)
                num = num * 10 + (st[i] - '0');

            value[0] = num;

            for(i=1; i<5; i++)
                cin >> value[i] >> charcter[i];

            calculation();
        }
        while(cin >> st && st != "-");

        double sum = 0.0;

        for(i=0; i<5; i++)
            sum += total[i];

        double fat = total[0]/sum * 100.00;

        fat = round(fat);

        cout << fat << "%\n";

        for(i=0;i<5;i++)
            total[i] = 0;
    }

    return 0;
}

Comments