#include <cmath> #include <iostream> using namespace std; class Circle{ private: int x,y; int radius; public: Circle(int x,int y,int radius); double distance(const Circle &c); }; Circle::Circle(int x,int y,int radius):x(x),y(y),radius(radius){ } double Circle::distance(const Circle &c){ double dis=sqrt((x-c.x)*(x-c.x)+(y-c.y)*(y-c.y)); return dis; } int main(int argc, char* argv) { Circle c1(0,0,1),c2(1,1,1); cout<<"c1和c2的距离"<<endl; return 0; }输出的结果
时间: 2024-02-15 17:04:36 浏览: 20
程序中并没有输出 c1 和 c2 的距离,需要在 main 函数中调用 distance 函数并输出结果,如下所示:
```
#include <cmath>
#include <iostream>
using namespace std;
class Circle{
private:
int x,y;
int radius;
public:
Circle(int x,int y,int radius);
double distance(const Circle &c);
};
Circle::Circle(int x,int y,int radius):x(x),y(y),radius(radius){ }
double Circle::distance(const Circle &c){
double dis=sqrt((x-c.x)*(x-c.x)+(y-c.y)*(y-c.y));
return dis;
}
int main(int argc, char* argv) {
Circle c1(0,0,1),c2(1,1,1);
cout<<"c1和c2的距离为:"<<c1.distance(c2)<<endl;
return 0;
}
```
输出结果为:
```
c1和c2的距离为:1.41421
```
相关问题
检查这段代码的错误#include<match> #include <iostream> using namespace std; class Circle{ private: int x,y; int radius; public: Circle(int x,int radius); double distance(const Circle &c); }; Circle::Circle(int x,int y,int radius):x(x),y(y),radius(radius){ } double Circle::distance(const Circle &c){ double dis=sqrt((x-c.x)*(x-c.x)+(y-c.y)*(y-c)); return dis; } int main(int argc, char** argv) { Circle c1(0,0,1),c2(1,1,1); cout<<"c1和c2的距离"<<endl; return 0; }
这段代码有以下两个错误:
1. 包含了错误的头文件,应该包含 <cmath> 而不是 <match>,因为在代码中使用了 sqrt 函数。
2. Circle 类的构造函数参数列表中只给出了两个参数,但是定义时需要三个参数,应该将构造函数的定义改为:
```
Circle::Circle(int x,int y,int radius)
:x(x),y(y),radius(radius){ }
```
修改后的代码如下:
```
#include <iostream>
#include <cmath>
using namespace std;
class Circle{
private:
int x,y;
int radius;
public:
Circle(int x,int y,int radius);
double distance(const Circle &c);
};
Circle::Circle(int x,int y,int radius)
:x(x),y(y),radius(radius){ }
double Circle::distance(const Circle &c){
double dis=sqrt((x-c.x)*(x-c.x)+(y-c.y)*(y-c.y));
return dis;
}
int main(int argc, char** argv) {
Circle c1(0,0,1),c2(1,1,1);
cout<<"c1和c2的距离"<<endl;
return 0;
}
```
c++编程代码差错:#include <iostream>#include <cmath>using namespace std;class Point {public: Point(double x, double y) : x(x), y(y) {} virtual ~Point() {} double getX() const { return x; } double getY() const { return y; }private: double x; double y;};class Circle : public Point {public: Circle(double x, double y, double radius) : Point(x, y), radius(radius) {} virtual ~Circle() {} double getRadius() const { return radius; } double getArea() const { return M_PI * radius * radius; }private: double radius;};int main() { Circle c(1.0, 2.0, 3.0); cout << "Circle with center (" << c.getX() << ", " << c.getY() << ") and radius " << c.getRadius() << endl; cout << "Area: " << c.getArea() << endl; return 0;}
这段代码存在一个错误,即 Circle 类继承了 Point 类,但是我们知道 Circle 不应该是 Point 的子类,因为 Circle 拥有的属性和方法 Point 并没有。正确的做法是使用组合,即在 Circle 类中包含一个 Point 类型的对象。
以下是修改后的代码:
```
#include <iostream>
#include <cmath>
using namespace std;
class Point {
public:
Point(double x, double y) : x(x), y(y) {}
virtual ~Point() {}
double getX() const { return x; }
double getY() const { return y; }
private:
double x;
double y;
};
class Circle {
public:
Circle(double x, double y, double radius) : center(x, y), radius(radius) {}
virtual ~Circle() {}
double getRadius() const { return radius; }
double getArea() const { return M_PI * radius * radius; }
Point getCenter() const { return center; }
private:
Point center;
double radius;
};
int main() {
Circle c(1.0, 2.0, 3.0);
cout << "Circle with center (" << c.getCenter().getX() << ", " << c.getCenter().getY() << ") and radius " << c.getRadius() << endl;
cout << "Area: " << c.getArea() << endl;
return 0;
}
```
修改后的代码使用了组合,Circle 类包含了一个 Point 对象 center,这样 Circle 就拥有了自己的属性和方法。在 main 函数中,我们可以通过调用 getCenter 函数来获取 Circle 对象的中心坐标。