作者richforman (要当有叶人)
看板EE_DSnP
标题Re: [问题] 关於第2题
时间Mon Oct 22 23:35:03 2007
不好意思
我第二题也有点问题
以下是我的程式码:
--
class Circle
{
public:
Circle(float ,int ,int );
void setPerimeter();
void setArea();
float getPerimeter();
float getArea();
private:
float r1,result1,result2;
int x1, y1;
};
class Square
{
public:
Square(float ,int ,int );
void setPerimeter();
void setArea();
float getPerimeter();
float getArea();
private:
float r2,result3,result4;
int x2, y2;
};
Circle::Circle(float r1, int x1, int y1)
{
getPerimeter();
getArea();
}
Square::Square(float r2, int x2, int y2)
{
getPerimeter();
getArea();
}
float Circle::getPerimeter()
{
return result1;
}
float Circle::getArea()
{
return result2;
}
float Square::getPerimeter()
{
return result3;
}
float Square::getArea()
{
return result4;
}
void Circle::setPerimeter()
{
result1=r1*2*3.14;
}
void Circle::setArea()
{
result2=r1*r1*3.14;
}
void Square::setPerimeter()
{
result3=(2*x2+2*y2);
}
void Square::setArea()
{
result4=x2*y2;
}
--
执行结果:
Circle has smaller perimeter (3.21392e-039) than Square(7.77876e+033)!!
Circle has larger area (1.12104e-044) than Square(0)!!
Compiler会过,但是出来的值非常的奇怪
不知道哪里的逻辑有问题,还请板上的高手帮忙了<(_ _)>
PS:应该...不会是我算数错了吧...Orz~~~
※ 引述《INsoarDEEP (green)》之铭言:
: Compiler跟我说Int main()里面的Circle::getPerimeter()没有matching function
: 但我不会修正,想请大家指点一下,感谢!
: 这是我的程式码
: #include <iostream>
: using namespace std;
: class Circle
: {public:
: float getPerimeter(float a,int b,int c)
: {cin >> a >> b >> c ;
: cout << 2*a*3.14;
: }
: float getArea(float a,int b,int c)
: {cin >> a >> b >> c ;
: cout << 3.14*a*a ;
: }
: };
: class Square
: {public:
: float getArea()
: {cin >> d >> e >> f ;
: cout << d*d;
: }
: float getPerimeter()
: {cin >> d >> e >> f ;
: cout << 4*d;
: }
: private:
: float d;
: int e,f;
: };
: int main()
: {
: float r1, r2;
: int x1, y1, x2, y2;
: cout << "Please enter the radius and center coordinates "
: << "for the circle (r/x/y): ";
: cin >> r1 >> x1 >> y1;
: cout << "Please enter the side length and center coordinates "
: << "for the Square (s/x/y): ";
: cin >> r2 >> x2 >> y2;
: Circle c1;
: Square s2;
: float p1 = c1.getPerimeter(), p2 = s2.getPerimeter();
: if (p1 > p2)
: cout << "Circle has larger perimeter (" << p1 << ") than "
: << "Square(“ << p2 << “)!!" << endl;
: else
: cout << "Circle has smaller perimeter (“ << p1 << “) than "
: << "Square(“ << p2 << “)!!" << endl;
: float a1 = c1.getArea(), a2 = s2.getArea();
: if (a1 > a2)
: cout << "Circle has larger area (“ << a1 << “) than "
: << "Square(“ << a2 << “)!!" << endl;
: else
: cout << "Circle has smaller area (“ << a1 << “) than "
: << "Square(“ << a2 << “)!!" << endl;
: return 0;
: system ("pause");
: }
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.5.51
1F:推 ric2k1:constructor 里应该是要呼叫 setXXX() 吧? 10/22 23:46