#include <bits/stdc++.h>
using namespace std;
class Data
{
private:
//vector <double> beta;
double av_beta1, av_beta2;
double J;
public:
Data()
{
av_beta1 = av_beta2 = 0;
}
void input()
{ double total_beta1 = 0;
double total_beta2 = 0;
double beta;
for(int i = 0;i < 4; i++)
{
cin>>beta;
total_beta1 += beta;
}
for(int i = 0;i < 4; i++)
{
cin>>beta;
total_beta2 += beta;
}
av_beta1 = total_beta1/4;
av_beta2 = total_beta2/4;
}
void compute()
{
J = (50*1.9*0.01*(9.8-av_beta2*0.019))/(av_beta1-av_beta2);
}
double get()
{
return J;
}
void show(int I )
{
cout<<"beta2: "<<setprecision(3)<<fixed<<av_beta1<<" (rad/s^2)"<<endl;
cout<<"beta1: "<<setprecision(3)<<fixed<<av_beta2<<" (rad/s^2)"<<endl;
cout<<"J";
switch(I)
{
case 1 :cout<<"_空台: ";break;
case 2 :cout<<"_空台+圆环: ";break;
case 3 :cout<<"_空台+圆盘: ";break;
case 4 :cout<<"_空台+圆柱_位0: ";break;
case 5 :cout<<"_空台+圆柱_位1: ";break;
case 6 :cout<<"_空台+圆柱_位2: ";break;
}
cout<<setprecision(3)<<J<<" * 10^-3 (kg*m^2)"<<endl;
}
};
void example()
{
cout<<"Please upload your precise experimental data to the file \"input.txt\" "<<endl;
cout<<"For example:"<<endl;
cout<<"2.301 2.288 2.294 2.285 -0.205 -0.203 -0.200 -0.203"<<endl;
cout<<"0.936 0.923 0.911 0.903 -0.110 -0.110 -0.109 -0.108"<<endl;
cout<<"1.301 1.273 1.271 1.241 -0.157 -0.157 -0.156 -0.153"<<endl;
cout<<"2.241 2.255 2.260 2.121 -0.237 -0.233 -0.237 -0.232"<<endl;
cout<<"2.033 2.007 2.017 2.024 -0.151 -0.212 -0.212 -0.213"<<endl;
cout<<"1.821 1.807 1.797 1.753 -0.201 -0.198 -0.195 -0.189"<<endl;
cout<<endl;
}
int main()
{
double M1,M2,M3;
double J1, J2;
cout<<"Please reset and confirm the experimental data:"<<endl;
cout<<"砝码的质量:Quality weights = 50g (g = 9.8m/s^2)"<<endl;
cout<<"塔轮的半径:r = 1.9cm"<<endl;;
cout<<"圆盘:r = 10.0cm , m1 = ?g(582.3)"<<endl;
cin>>M1;
J2 =(M1*0.1*0.1) /2.0;
cout<<"圆环: r = 8.6cm , R = 10.0cm , m2 = ?g(638.1)"<<endl;
cin>>M2;
J1 =(M2*0.093*0.093);
cout<<"圆柱: m3 = ?g(172.6)"<<endl;
cin>>M3;
cout<<"小孔距载舞台中心: r1 = 0.0cm , r2 = 5.0cm , r3 = 7.5cm"<<endl;
cout<<endl;
example();
double key[6]= {};
cout<<"Did you finished it? (Y/N)"<<endl;
char C;
cin>>C;
if(C!='Y')cout<<"Just do it!"<<endl;
else
{
cout<<"OK!"<<endl<<endl;
ifstream in("input.txt");
cin.rdbuf(in.rdbuf());
for(int I = 1; I <= 6; I++)
{
Data data;
data.input();
cout<<"You have input your Experiment"<<I<<":"<<endl;
data.compute();
data.show(I);
cout<<endl;
if(I == 1)key[I] = data.get();
else key[I] = data.get()-key[1];
}
cout<<"数据处理与实验结果:"<<endl;
cout<<"(1)圆环"<<endl;
cout<<"测量值="<<setprecision(3)<<key[2]<<" * 10^-3 (kg*m^2)"<<endl;
cout<<"理论值="<<setprecision(3)<<J1<<" * 10^-3 (kg*m^2)"<<endl;
cout<<"相对误差="<<setprecision(3)<<fabs(key[2]-J1)<<" * 10^-3 (kg*m^2)"<<endl;
cout<<"(2)圆盘"<<endl;
cout<<"测量值="<<setprecision(3)<<key[3]<<" * 10^-3 (kg*m^2)"<<endl;
cout<<"理论值="<<setprecision(3)<<J2<<" * 10^-3 (kg*m^2)"<<endl;
cout<<"相对误差="<<setprecision(3)<<fabs(key[3]-J2)<<" * 10^-3 (kg*m^2)"<<endl;
cout<<"(3)圆柱"<<endl;
cout<<setprecision(3)<<key[4]<<" * 10^-3 (kg*m^2)"<<endl;
cout<<setprecision(3)<<key[5]<<" * 10^-3 (kg*m^2)"<<endl;
cout<<setprecision(3)<<key[6]<<" * 10^-3 (kg*m^2)"<<endl;
cout<<"作图-呈线性关系。"<<endl;
}
printf("Press any key to continue...");
getchar();
getchar();
return 0;
}
——————————————————————————————————————————————————————
Sample Input:
582.3
638.1
172.6
Y
(附件:input.txt)
———————————
Sample Output: