6.18编程练习

不用构造函数解决问题:

1、Rectangle的矩形类,其属性(数据成员)为矩形的左下角与右上角两个点的坐标(共四个整数)。要求:类中定义以下成员函数(不定义构造函数)
(1)set 函数,输入矩形左下角和右上角的坐标。
(2)getL函数,计算并返回矩形的宽度(矩形中长的那条边为宽度)。
(3) getW函数。计算并返回矩形的高度(矩形中短的那条边为宽度)。
(4)area函数, 计算并返回矩形的面积。
#include <iostream>
using namespace std;
class Rectangle
{
private:
    int x1, y1, x2, y2;
public:
    void set(int xa, int ya, int xb, int yb);
    int getL();
    int getW();
    int area();
};
void Rectangle::set(int xa, int ya, int xb, int yb)
{
    x1 = xa;
    y1 = ya;
    x2 = xb;
    y2 = yb;
}
int Rectangle::getL()
{
    return abs(x2 - x1);
}
int Rectangle::getW()
{
    return abs(y2 - y1);
}
int Rectangle::area()
{
    return getL() * getW();
}
int main()
{
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    Rectangle r;
    r.set(a, b, c, d);
    cout << r.area() << endl;
    return 0;
}
2、定义一个Point类,用来描述平面上的一个点,并定义成员函数Move ,支持点的移动操作。
要求:定义三个点A,B,C,
输入
输入三个点的坐标;输入第三个点移动到的目标位置
说明:坐标点的类型为int
输出
输出三个点的坐标。并输出A,B两点之间的距离。
#include <iostream>
#include <cmath>
using namespace std;
class Point
{
private:
    int x;
    int y;
public:
    void set(int x1,int y1)
    {
        x=x1;
        y=y1;
    }
    int getx(){return x;}
    int gety(){return y;}
    void move(int x2,int y2)
    {
        x=x2;
        y=y2;
    }
};
int main()
{
   int a1,b1,c1,d,e,f,g,h;
    cin>>a1>>b1>>c1>>d>>e>>f>>g>>h;
    Point a,b,c;
    a.set(a1,b1);
    b.set(c1,d);
    c.set(e,f);
    c.move(g,h);
    int distance=sqrt(pow(a.getx()-b.getx(),2)+pow(a.gety()-b.gety(),2));
    cout<<"("<<a.getx()<<","<<a.gety()<<")"<<endl;
    cout<<"("<<b.getx()<<","<<b.gety()<<")"<<endl;
    cout<<"("<<c.getx()<<","<<c.gety()<<")"<<endl;
    cout<<distance<<endl;
       return 0;
}
3
定义一个分数类。
包含一组set 和get函数。该组函数分别完成数据成员赋值及获取数据成员值得功能。
定义一个成员函数,该成员函数以 a/b的方式输出一个分数。(要求对分子和分母进行约分)
 

#include <iostream>
#include <cmath>
using namespace std;
class Fraction
{
public:
    int a;
    void set(int b)
    {
        a=b;
    }
    int get()
    {
        return a;
    }
void zuida(int b)
{
    int m=a;
    int n=b;
    while (b != 0)
    {
        int r=a % b;
        a = b;
        b = r;
    }
    cout << m/a << "/" << n/a<<endl;
}
};
int main()
{
    Fraction test1,test2;
    int a,b;
    while (cin>>a>>b)
    {
        test1.set(a);
        test2.set(b);
        test1.zuida(test2.get());
    }
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值