敘述:烏鴉要啄石子放入有水的玻璃瓶,這隻烏鴉的數理不錯,利用排容原理取出水喝。
條件:輸入多筆測資代表石子的半徑,石子半徑要<瓶口半徑(3.5)才能放入瓶中,請用break、continue判斷。
石子的總體機要大於100*pi才可以喝到水。
請輸出「石子數量、空格、瓶中石子總體機(計算至小數點第二位)」
[體積公式:r*r*r*4*pi/3],本題側資忽略pi常數,計算、輸出不必使用pi。
Input:多筆測資,輸入石子的半徑。
Output:每筆測資進來,請輸出現在的石子數量、石頭總體積。當水滿出來時(石頭總體積>100pi),輸出「get water」並結束。
#include <iostream>
#include <iomanip> /**控制小數位數的函式庫**/
#define _USE_MATH_DEFINES
#include <cmath>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
double pi = M_PI;
class bottle
{
public:
bottle(double Inp_r)
{
r_bottle = Inp_r;
rock_cnt = 0;
rock_v = 0;
}
int CheckRock(double Inp_r)
{
if(Inp_r<r_bottle)
return 1;
else
return 0;
}
void content(double Inp_r)
{
rock_cnt++;
rock_v += (4*(Inp_r*Inp_r*Inp_r)/**pi*/)/3;
cout<<rock_cnt<<" ";
cout<<fixed<<setprecision(2)<<rock_v<<endl; /**fixed限制為小數的位數、setprecision控制位數**/
}
int CheckWater()
{
if(rock_v>=(/*pi**/100))
return 1;
else
return 0;
}
private:
double r_bottle;
int rock_cnt;
double rock_v;
};
int main()
{
double rock;
double bottle_r = 3.5;
bottle obj01(bottle_r);
for(;cin>>rock;)
{
if(obj01.CheckRock(rock)){
obj01.content(rock);}
if(obj01.CheckWater()){
cout<<"get water"<<endl;
break;
}else{continue;}
}
return 0;
}