gpt4 book ai didi

c++ - qsort 用于对对象表进行排序

转载 作者:行者123 更新时间:2023-11-28 06:33:03 25 4
gpt4 key购买 nike

<分区>

我的程序应该像这样工作:

  1. 输入您要创建的点数。
  2. 为每个点写下这些:名称、x 位置、y 位置
  3. 程序要计算点到原点(0,0)的长度,它在函数Leng()中计算
  4. 所有参数都保存在对象abc中
  5. 然后创建对象表 TabOb
  6. 我想对我的点进行排序,从点和原点之间的最小长度 (0,0) 到点和原点之间的最大长度。我想使用 stdlib.h 中的 qsort 函数来做到这一点我有一个创建比较功能的想法,它可以帮助我做到这一点,但我不知 Prop 体怎么做。有人可以帮助我吗?

我将在最后给你一个我想得到的输入和输出的例子:

输入:

2

B 6 8

A 9 12

D 3 4

输出:

D 3 4 

B 6 8

A 9 12

这是我的代码:

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;

class Klasa {
string name;
int x,y;
double rr,leng;

Klasa* TabOb;//table of objects
int t;//number of points
public:
Klasa(){}
Klasa(string name, int x,int y) {
this->name = name;
this->x = x;
this->y = y;
this->leng = Leng();
}
double Leng(){
double rr, sq;
rr = x*x + y*y;
sq = sqrt(rr);
return sq;
}

int getX() { return x; }
int getY(){ return y; }
string getName() { return name; }
double getLength(){ return leng; }

int compare(const void * a, const void * b)
{
int _a = *(int*)a;
int _b = *(int*)b;
if (_a < _b) return -1;
else if (_a == _b) return 0;
else return 1;
}

void InputData(){
cin >> t;

TabOb = new Klasa[t];
for (int i = 0; i < t; i++){
string name;
int x, y;
cin >> name;
cin >> x;
cin >> y;
Klasa abc(name, x, y);
TabOb[i] = abc;
}


qsort(TabOb, t, sizeof(int), compare);

for (int i = 0; i < t; i++){
cout << TabOb[i].getName() << " " << TabOb[i].getX() << " " << TabOb[i].getY() << " " << TabOb[i].getLength() << endl;
}
}
}wy;

int main() {

wy.InputData();
return 0;
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com