回 帖 发 新 帖 刷新版面

主题:实现圆柱类Column的定义

圆柱类Column的定义
class Column
{
public:
     Column(double x,double y,double r,double h);
     ~Column();
     double area();    //求圆柱面积
     double volumn();  //求圆柱体积
private:
     double height;    //高度
     double radius;    //半径
     double x;         //底面积圆心x的坐标
     double y;         //底面积圆心y的坐标

};
要求:
(1) 实现Column中的四个成员函数;
(2)增加一个友元函数,实现从键盘读取四个double类型的数据对类Column的对象进行赋值的功能;
(3)增加一个友元函数,实现将类Column的对象输出到屏幕的功能,输出信息包括对象的基本信息以及对象的面积和体积。
编程提示:
友元函数的声明:
void friend set(Column &t);
void friend print(Column &t);

回复列表 (共8个回复)

沙发

【友元函数的声明:】
【void friend set(Column &t);】
【void friend print(Column &t);】

实在很蹩脚。

这么做是否可以?

#include <iostream>
using namespace std;

const double _pi = 3.1415926;

class TColum
{
public:
    friend ostream& operator<< (ostream&, TColum&);
    friend istream& operator>> (istream&, TColum&);
    TColum(double x = 0, double y = 0, double r = 0, double h = 0)
        : _x(x), _y(y), _radius(r), _height(h) {}
    ~TColum() {}
    double Area() const;
    double Volumn() const;
protected:
private:
    double _height;
    double _radius;
    double _x;
    double _y;
};


inline 
double TColum::Area() const
{
    return  _pi * _radius * _radius;
}

inline
double TColum::Volumn() const
{
    return _height * Area();
}

inline
ostream& operator<< (ostream& os, TColum& colum)
{
    os << "A Colum's x, y, area, volumn is " << std::endl;
    os << "x == " << colum._x << std::endl;
    os << "y == " << colum._y << std::endl;
    os << "Area == " << colum.Area() << std::endl;
    os << "Volumn == " << colum.Volumn() << std::endl;

    return os;


inline 
istream& operator>> (istream& is, TColum& colum)
{
    std::cout << "please input x :" << std::endl;
    is >> colum._x;
    std::cout << "please input y :" << std::endl;
    is >> colum._y;
    std::cout << "please input radius: " << std::endl;
    is >> colum._radius;
    std::cout << "please input height: " << std::endl;
    is >> colum._height;

    return is;
}

int main(int, char **, char **)
{
    TColum cl1, cl2;
    cout << cl1 << endl;
    
    cin >> cl2;
    cout << cl2 << endl;
}
icl编译。

板凳

呵呵   忘了   是vc编译的   辛苦下!

3 楼

vc2003以上编译。一点问题都没有。try again please.....
没觉得辛苦,只觉得有些啰嗦

4 楼

高手啊  这个  我都没学 啊    看不懂啊

5 楼

谢谢鼓励和意见。

6 楼

能不能帮我改改啊 

7 楼

[quote]能不能帮我改改啊 
[/quote]
你要改成什么样的?麻烦给我说清楚你的意思好吗,代码没学过,话总可以说清楚

8 楼

还是不用了!  不过还是要谢谢你!

我来回复

您尚未登录,请登录后再回复。点此登录或注册