#include<iostream>
#include <cmath>
using namespace std;
class Point{
public:
Point();//缺省构造函数
Point(int x,int y):x(x),y(y){}//构造函数
~Point(){};//析构函数
int getX() const {return x;}
int getY() const {return y;}
double distance(int x,int y);
private:
int x,y;
};
Point::Point(){
x=y=0;
}
double Point::distance(int x,int y){
return sqrt(x*x+y*y);
}
int Ascending(double a[]){
int temp;
for(int i=0;i<10-1;i++){
for(int j=0;j<10-1-i;j++){
if(a[j]>a[j+1]){
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
for(int i=0;i<10;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int main(){
double b[10];
Point a[10]={Point(-1,-3),Point(-2,-4),Point(1,3),Point(-2,5),Point(3,-4),Point(5,3),Point(1,7),Point(6,3),Point(4,4),Point(7,8)};
for(int i=0;i<10;i++){
b[i]=a[i].distance(a[i].getX(),a[i].getY());
}
Ascending(b);
return 0;
}
题目要求:
创建点的对象数组,包含10个点,编写函数使得点按照距离原点的远近排列,在主函数中输出排序后的点及其距离值(30分)。10个点的坐标分别为:
(-1,-3),(-2,-4),(1,3),(-2,5),(3,-4),(5,3),(1,7),(6,3),(4,4),(7,8)
如题,加粗的功能未实现,求教
#include<iostream>
#include <cmath>
using namespace std;
class Point {
public:
Point();//缺省构造函数
Point(int x, int y) :x(x), y(y) {}//构造函数
~Point() {};//析构函数
int getX() const { return x; }
int getY() const { return y; }
double distance(int x, int y);
double dis;
private:
int x, y;
};
Point::Point() {
x = y = 0;
dis = 0;
}
double Point::distance(int x, int y) {
return sqrt(x*x + y * y);
}
int Ascending( Point (&a)[10]) {
Point temp;
for (int i = 0; i < 10 - 1; i++) {
for (int j = 0; j < 10 - 1 - i; j++) {
if (a[j].dis > a[j + 1].dis) {
temp = a[j + 1];
a[j + 1] = a[j];
a[j] = temp;
}
}
}
for (int i = 0; i < 10; i++) {
//cout << a[i].getX() << " ";
printf("x=%d y=%d distance=%f \n", a[i].getX(), a[i].getY(), a[i].dis);
}
cout << endl;
return 0;
}
int main() {
//double b[10];
Point a[10] = { Point(-1,-3),Point(-2,-4),Point(1,3),Point(-2,5),Point(3,-4),Point(5,3),Point(1,7),Point(6,3),Point(4,4),Point(7,8) };
for (int i = 0; i < 10; i++) {
a[i].dis = a[i].distance(a[i].getX(), a[i].getY());
}
Ascending(a);
system("pause");
return 0;
}
做了一些修改,Point里新增了dis变量用于存储计算距离的结果,直接用Point (&a)[]数组来排序,方便后续的结果打印。
在第18行做了xy点和distance的输出。
还有问题的话可以再在评论区交流,望采纳谢谢
标记一下晚点看。