我正在创建分数结构数组排序程序。
一个小数字(略低于 1000)我的程序有很好的答案
但是大数字(略超过 100000)我的程序有错误的答案
有什么问题?
这是我的源和输入数据
#include <cstdlib>
#include <iostream>
using namespace std;
struct Fraction {
long long denominator;
long long numerator;
};
int compare(const void *a, const void *b) {
const struct Fraction *x = (Fraction *)a;
const struct Fraction *y = (Fraction *)b;
long long val = x->numerator * y->denominator - x->denominator * y->numerator;
if (val == 0) {
return x->numerator - y->numerator > 0 ? 1 : -1;
} else {
return val;
}
}
Fraction setOfData[100000];
int numOfData, numOfK;
int main() {
cin >> numOfData >> numOfK;
for (int i = 0; i < numOfData; ++i) {
long long denominator;
long long numerator;
cin >> numerator >> denominator;
setOfData[i].numerator = numerator;
setOfData[i].denominator = denominator;
}
qsort(setOfData, numOfData, sizeof(Fraction), compare);
cout<< setOfData[numOfK - 1].numerator << ' ' << setOfData[numOfK - 1].denominator;
return 0;
}
这是我的输入数据
input data
7 4
56783 9765493
56786 9765492
56788 9765491
8888888 9765464
56687 9765395
56789 9765497
56785 9765496
分拣标准不降低
输入数据我的程序打印
8888888 9765464
56687 9765395
56783 9765493
56785 9765496
56786 9765492
56788 9765491
56789 9765497
这个程序有什么不足?长吗?还是整数?请帮帮我...