POJ 1929

題意:1g脂肪中含有9卡路里,1g蛋白質、1g血糖、1g澱粉中含有4卡路里,1g乙醇中含有7卡路里,要求輸入脂肪、蛋白質、血糖、澱粉、乙醇的量,都爲整數,單位爲("%、g、C")不定,輸入的每一行是每一份食物中脂肪、蛋白質、血糖、澱粉、乙醇的含量,每一行數據至少有1個數據不爲0,單位爲("g、C"),以'-'終止本次輸入,連續出現兩次'-'終止程序。要求輸出所有數據中,脂肪所佔的百分比,結果保留整數,四捨五入。

思路:利用數學推出所有食物的總卡力路含量和總脂肪含量,算出脂肪所佔的百分比。

代碼:

#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
int main()
{
   char temp,f1,p1,su1,st1,a1;
   double f,p,su,st,a,sum=0,fat=0;
   int flag=0,flag2;
   while(cin>>temp)
   {
       if(temp=='-')
       {
           flag++;
           if(flag==1){cout<<fixed<<setprecision(0)<<fat/sum*100<<"%"<<endl;fat=sum=0;continue;}
           if(flag==2)break;
       }
       flag=0;flag2=0;
       cin.putback(temp);
       cin>>f>>f1>>p>>p1>>su>>su1>>st>>st1>>a>>a1;
       if(f1=='%'){f/=100.0;flag2=1;}
       else if(f1=='g')f*=9;
       if(p1=='%'){p/=100.0;flag2=1;}
       else if(p1=='g')p*=4;
       if(su1=='%'){su/=100.0;flag2=1;}
       else if(su1=='g')su*=4;
       if(st1=='%'){st/=100.0;flag2=1;}
       else if(st1=='g')st*=4;
       if(a1=='%'){a/=100.0;flag2=1;}
       else if(a1=='g')a*=7;
       if(flag2==1)
       {
           double sum1=0,sum2=0;
           if(f>=1)sum1+=f;
           else sum2+=f;
           if(p>=1)sum1+=p;
           else sum2+=p;
           if(su>=1)sum1+=su;
           else sum2+=su;
           if(st>=1)sum1+=st;
           else sum2+=st;
           if(a>=1)sum1+=a;
           else sum2+=a;
           sum+=sum1/(1-sum2);
           if(f<1)fat+=f*(sum1/(1-sum2));
           else fat+=f;
       }
       else 
       {
           sum+=f+p+su+st+a;
           fat+=f;
       }
   }
   return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章