zoukankan      html  css  js  c++  java
  • 网络工程18级《C++程序设计II》实践作业1

     

    A.类的应用1
    Time Limit: 1000 MS Memory Limit: 32768 K
    Total Submit: 162 (133 users) Total Accepted: 136 (132 users) Special Judge: No
    Description
    利用面向对象程序设计的方法,通过长方体的长、宽、高求长方体的体积与表面积。
    Input
    多组测试数据。第一行输入测试数据的组数t(0<t<10);以下t行每行输入长方体的长a、宽b、高c,(0<a,b,c<10,且为int型,a、b、c之间由空格分隔)。
    Output
    每组输出数据为2个,分别为长方体的体积和表面积,数据之间由空格分隔。
    Sample Input
    6
    7 5 6
    4 6 8
    5 9 4
    1 10 1
    5 4 5
    10 7 7
    Sample Output
    214 210
    208 192
    202 180
    42 10
    130 100
    378 490

    code:

    #include<iostream>
    using namespace std;
    class rectangle{
    float length;
    float width;
    float height;
    public:
    rectangle(){};
    rectangle(float l,float w,float h){
        length = l;
        width = w;
        height = h;
    }
    ~rectangle(){};
    void setDimension(float l,float w,float h){
    length = l;
    width = w;
    height = h;
    }
    float getLength(){return length;}
    float getWidth(){return width;}
    float getHeight(){return height;}
    float getVolum(){return length*width*height;}
    float getArea(){return 2*(length*width+length*height+width*height);;}
    };
    int main(){
        int T;
        cin>>T;
        while(T--){
            int a,b,c;
            cin>>a>>b>>c;
            rectangle myrectangle(a,b,c);
            cout<<myrectangle.getArea()<<" "<<myrectangle.getVolum()<<endl;
        }
    
    
    return 0;
    }

     

    B.类的应用2
    Time Limit: 1000 MS Memory Limit: 32768 K
    Total Submit: 166 (132 users) Total Accepted: 135 (131 users) Special Judge: No
    Description
    利用面向对象程序设计的方法,通过三角形的三边求三角形的周长。
    Input
    多组测试数据。第一行输入测试数据的组数t(0<t<10);以下t行每行输入三角形的三边a、b、c,(0<a,b,c<10,且为int型,a、b、c之间由空格分隔)。
    Output
    每组输出数据为1个。当输入的三边能够构成三角形时,输出周长;当输入的三边不能构成三角形时输出“error”。
    Sample Input
    2
    1 10 1
    5 4 5
    Sample Output
    error
    14

     

     

    #include<iostream>
    using namespace std;
    class triangle{
        int a,b,c;
        public:
        void set(int a, int b, int c){
        this->a = a;
        this->b = b;
        this->c = c;
        }
        bool istri(){
        return a+b>c && a+c>b && b+c>a;
        }
        int getl(){
            return a+b+c;
        }
    
    };
     int main(){
        int a,b,c,N=0;
        triangle T;
        cin>>N;
        while(N--){
            cin >> a >> b >> c;
            T.set(a,b,c);
            if(T.istri()){
            cout <<T.getl()<< endl;
            }else{
                cout <<"error"<< endl;
             }
        }
    }
    C.类的应用3
    Time Limit: 1000 MS Memory Limit: 32768 K
    Total Submit: 193 (127 users) Total Accepted: 135 (127 users) Special Judge: No
    Description
    利用面向对象程序设计的方法解决问题。行走江湖,靠的是脑力和武器。脑瓜灵光,武器平平免不了输给或愚钝但手握屠龙的无名之辈,脑力与武器按照四六比例决定一个人的江湖地位。适逢Apple新店开业,当街擂台比武海选晋级选手赢取Apple X。比武之前要登记选手:选手名(长度不大于10的字符串)、脑力值(不大于100的整数)、武器名(长度不大于10的字符串)、武器攻击力(不大于100的整数)。比武方式:两两一组,对打。
    Input
    多组测试数据。第一行输入测试数据的组数t(0<t<10);以下2t行每2行输入2名比武者的信息:选手名、脑力值、武器名、武器攻击力,数据之间由空格分隔。
    Output
    针对每2行选手的输入,输出比武结果。
       当前者打败了后者,会输出:前者名 win 后者名
       当前者输给了后者,会输出:前者名 lost 后者名
       当前者与后者不分胜负,会输出:前者名 tie 后者名
    Sample Input
    3
    Sunwk 100 Jingb 100
    Niumw 0 Bajs 100
    Tangsz 100 Chanzhang 0
    Honghe 80 Huolongqiang 60
    ZHUba 60 JCdp 60
    SHAwj 30 FTc 80
    Sample Output
    Sunwk win Niumw
    Tangsz lost Honghe
    ZHUba tie SHAwj
    Hint
    Honghe 80 Huolongqiang 60:此人江湖能力为80*0.4+60*0.6=68
    #include<iostream>
    using namespace std;
    class people{
        string name;
        int wind;
        string gun;
        int power;
        public:
        void set(string name,int wind, string gun, int power){
        this->name = name;
        this->wind = wind;
        this->gun = gun;
        this->power = power;
        }
        int getTolPower(){
            return wind*0.4+power*0.6;
        }
    };
    int main(){
        int t;
        cin>>t;
        people p1,p2;
        while(t--){
            string name,name2,gun;
            int wind,power;
            cin>>name>>wind>>gun>>power;
            p1.set(name,wind,gun,power);
            cin>>name2>>wind>>gun>>power;
            p2.set(name,wind,gun,power);
            if(p1.getTolPower()==p2.getTolPower()){
                cout<<name <<" tie "<< name2<<endl;
            }else if(p1.getTolPower()>p2.getTolPower()){
                cout<<name <<" win "<< name2<<endl;
            }else{
                    cout<<name <<" lost "<< name2<<endl;
            }
        }
    }
    D.类的应用4
    Time Limit: 1000 MS Memory Limit: 32768 K
    Total Submit: 160 (127 users) Total Accepted: 128 (127 users) Special Judge: No
    Description
    利用面向对象程序设计的方法解决问题。
       神魔争斗一直延续着...,是集智慧兵器威力一体(智慧与兵器威力权重比为4:6)的神与仅凭兵器威力的魔的较量。进入新的时代,要举办一场神魔擂台预选赛。现场注册登记,要记录神的名号(长度不大于10的字符串)、神的智慧值(不大于100的整数)、神使用兵器的名字(长度不大于10的字符串)以及威力值(不大于100的整数)。魔要记录魔的名字(长度不大于10的字符串)、魔使用兵器的名字(长度不大于10的字符串)以及威力值(不大于100的整数)。
    Input
    多组测试数据。第一行输入测试数据的组数t(0<t<10);以下2t行每2行的第一行输入神的名号、神的智慧值、神使用的兵器名字以及威力值,数据之间由空格分隔;第二行输入魔的名字、魔使用的兵器以及威力值,数据之间由空格分隔。
    Output
    针对每2行神魔比武的输入,输出比武结果。
         当神打败了魔,会输出:神名 win 魔名
         当神败给了魔,会输出:神名 lost 魔名
         当神魔不分胜负,会输出:神名 tie 魔名
    Sample Input
    3
    Tangsz 100 Chanzhang 0
    Honghe Huolongqiang 60
    Sunwk 100 Jingb 100
    Niumw Bajs 100
    Zhubj 20 Jiucdp 80
    Xiaoy Pud 20
    Sample Output
    Tangsz lost Honghe
    Sunwk tie Niumw
    Zhubj win Xiaoy
    Hint
    Tangsz 100 Chanzhang 0:此神战斗力为100*0.4+0*0.6=40
    Honghe Huolongqiang 60:此魔战斗力为60
    #include<iostream>
    #include<cstdlib>
    using namespace std;
    class people{
        string name;
        int wind;
        string gun;
        int power;
        public:
        void set(string name,int wind, string gun, int power){
        this->name = name;
        if(wind!=0){
            this->wind = wind;
        }else{
            this->wind = 0;
        }
        this->gun = gun;
        this->power = power;
        }
        int getTolPower(){
            if(this->wind==0){
                return power;
            }
            return wind*0.4+power*0.6;
        }
    };
    int main(){
        int t;
        cin>>t;
        people p1,p2;
        while(t--){
            string name,name2,gun;
            int wind,power;
            cin>>name>>wind>>gun>>power;
            p1.set(name,wind,gun,power);
            cin>>name2>>gun>>power;
            p2.set(name2,0,gun,power);
            if(p1.getTolPower()==p2.getTolPower()){
                cout<<name <<" tie "<< name2<<endl;
            }else if(p1.getTolPower()>p2.getTolPower()){
                cout<<name <<" win "<< name2<<endl;
            }else{
                    cout<<name <<" lost "<< name2<<endl;
            }
        }
    }

     
    E.类的应用5
    Time Limit: 1000 MS Memory Limit: 32768 K
    Total Submit: 168 (120 users) Total Accepted: 127 (120 users) Special Judge: No
    Description

    利用面向对象设计方法解决问题。根据主函数main()的内容、输入与输出数据,完成类的设计。
        在平面直角坐标系上建立两点A和B,并按格式输出其坐标。给定A、B两点坐标在x和y方向上的偏移量,再次输出两点的坐标。
        
        在平面直角坐标系上建立线段L,并按格式输出线段两端点的坐标及线段长度。
        在平面直角坐标系上建立线段L1,给定线段两端点在x和y方向上的偏移量从而得到线段的新位置与新的长度,并按格式输出该线段两端点的新坐标及线段长度。

    主函数如下:
    int main()
    {
        int n,x1,x2,y1,y2;
        Point A,B(10,10);
        cout<<"PointA:["<<A.getX()<<","<<A.getY()<<"] ";
        cout<<"PointB:["<<B.getX()<<","<<B.getY()<<"] ";
        cin>>x1>>y1;
        A.setP(x1,y1); B.setP(x1,y1);
        cout<<"PointA:["<<A.getX()<<","<<A.getY()<<"] ";
        cout<<"PointB:["<<B.getX()<<","<<B.getY()<<"] ";

        cin>>x1>>y1>>x2>>y2;
        Line L(x1,y1,x2,y2);
        L.getP();printf("%.2lf ",L.dis());

        Line L1(0,0,1,1);
        cin>>x1>>y1>>x2>>y2;
        L1.setL(x1,y1,x2,y2);
        L1.getP();printf("%.2lf ",L1.dis());

        return 0;

    Input
        第一行输入的是:A、B两点坐标在x和y方向上的偏移量,数据以空格分隔。
        第二行输入的是:线段L两端点的坐标x1,y1,x2,y2,数据以空格分隔。    
        第三行输入的是:线段L1两端点在x和y方向上的偏移量,数据以空格分隔。
    Output
        第一、二行输出的是点A与点B的坐标(按格式)。
        第三、四行输出的是在平移后的点A与点B的坐标(按格式)。
        第五行输出的是线段L两端点的坐标及长度(按格式)。
        第六行输出的是线段L1在平移后两端点的坐标及长度(按格式)。
    Sample Input
    5 5
    0 0 10 10
    1 1 5 5
    Sample Output
    PointA:[0,0]
    PointB:[10,10]
    PointA:[5,5]
    PointB:[15,15]
    (0,0)--(10,10):14.14
    (1,1)--(6,6):7.07
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    using namespace std;
    class Point{
        int X,Y;
        public:
            Point(){
                X=0;
                Y=0; 
            }
            Point(int x,int y):X(x),Y(y){}
            int getX(){
                return X;
            }
            int getY(){
                return Y;
            }
            void setP(int x,int y){
                this->X+=x;
                this->Y+=y;
            }
    };
    class Line{
        int X1,Y1,X2,Y2;
        public:
            Line(){
                X2=1;
                Y2=1;
            }
            Line(int x1,int y1,int x2,int y2):X1(x1),Y1(y1),X2(x2),Y2(y2){}
            void setL(int x1,int y1,int x2,int y2){
                    this->X1=x1;
                this->Y1=y1;
                    this->X2+=x2;
                this->Y2+=y2;
            }
            int getP(){
                cout<<"("<<X1<<","<<Y1<<")"<<"--"<<"("<<X2<<","<<Y2<<")"<<endl;
            }
            float dis(){
                return sqrt((X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-Y1));
            }
    };
    int main()
     {
         int n,x1,x2,y1,y2;
         Point A,B(10,10);
         cout<<"PointA:["<<A.getX()<<","<<A.getY()<<"]
    ";
         cout<<"PointB:["<<B.getX()<<","<<B.getY()<<"]
    ";
         cin>>x1>>y1;
         A.setP(x1,y1); B.setP(x1,y1);
         cout<<"PointA:["<<A.getX()<<","<<A.getY()<<"]
    ";
         cout<<"PointB:["<<B.getX()<<","<<B.getY()<<"]
    "; 
    
        cin>>x1>>y1>>x2>>y2;
         Line L(x1,y1,x2,y2);
         L.getP();printf("%.2lf
    ",L.dis()); 
    
        Line L1(0,0,1,1);
         cin>>x1>>y1>>x2>>y2;
         L1.setL(x1,y1,x2,y2);
         L1.getP();printf("%.2lf
    ",L1.dis()); 
    
        return 0; 
    }

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • 相关阅读:
    随机生成4位验证码(包含数字, 字母)
    eval注册和登录
    51单片机中断机制(定时器/计数器)
    CS106B
    机器学习算法之旅(转载)
    Ubuntu系统使用记录
    2. 自然语言处理预备知识
    1. 自然语言处理描述
    前端学习网站
    2016年总结,2017年计划
  • 原文地址:https://www.cnblogs.com/dgwblog/p/10640112.html
Copyright © 2011-2022 走看看