大家帮我看看下面这段程序,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:15:03
13.定义一个描述平面中点的类Point,数据成员包括点的坐标x,y,并且都为私有成员,成员函数包括计算面积。计算周长,输入和输出。定义Rect类数组,计算各个矩形面积和周长并输出。
#include <iostream>
#include <cmath>
using namespace std;

class Point{
float x,y;
public:
Point(float a,float b)
{x=a;y=b;show();cout<<"contructor of Point is called.\n";}
void show() {cout<<'('<<x<<','<<y<<')';}
friend class Rect;
};

class Rect{
Point p1,p2;
public:
void Input()
{float left,top,right,bottom;
cout<<"请输入矩形左上角和右下角坐标:";
cin>>left>>top>>right>>bottom;
}
Rect(float left,float top,float right,float bottom):p1(left,top),p2(right,bottom)
{cout<<"contructor of Rect is called.\n";}
float Length(Point p1,Point p2)
{return 2(p2.x-p1.x)+2(p1.y-p2.y);}
float Area(Point p1,Point p2)
{return (p2

好像还行吧,
问题1:这里,float Length函数中,return 2(p2.x-p1.x)+2(p1.y-p2.y)

乘号不能省略的-->return 2*(p2.x-p1.x)+2*(p1.y-p2.y);

下一个函数中的乘法一样的问题。

问题2:
float Length(Point p1,Point p2),
float Area(Point p1,Point p2),
void Print(Rect a)
这三个函数都不需要参数的,p1,p2是成员变量,不应该声明为形式参数,不用参数就好,类的成员函数可以直接访问类的成员变量,用了参数反而有不方便。

问题3:
rect.Print(Rect,Rect); 我估计这个就是因为你给函数加了参数,编译出错说缺参数你给加上去的,函数调用时只能传实参,就给个类型,自然是错上加错了,把Rec类的print函数的参数去掉后,这里改成
rect.Print(); 应该就差不多了。

基本看出来这几个问题,没有上机调试,你可以修改看一下。