测刚体的转动惯量

#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:

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值