#include<iostream>
using namespace std;
class moon{
public:
double s;
double p;
double i;
};
struct sumdata{
double sum;
};
struct pricedata{
double price;
};
//10 20
//18 15 10 12 13 1 2 3 4 5
//75 72 45 1 2 3 4 5 6 7
//4 5 4.5
//每个输入包含一个测试用例。
//每个测试用例先给出一个不超过 1000 的正整数 N 表示月饼的种类数、
//以及不超过 500(以万吨为单位)的正整数 D 表示市场最大需求量。
//随后一行给出 N 个正数表示每种月饼的库存量(以万吨为单位);
//最后一行给出 N 个正数表示每种月饼的总售价(以亿元为单位)。
//数字间以空格分隔。
//N D
//S1 S2 S3 SN
//P1 P2 P3 PN
int main()
{
int N,D;
cin>>N>>D;
class moon M[N];
sumdata S[N];
pricedata P[N];
for(int i=0;i<N;i++)
{
cin>>S[i].sum;
}
for(int i=0;i<N;i++)
{
cin>>P[i].price;
}
for(int i=0;i<N;i++)
{
M[i].s = S[i].sum;
M[i].p = P[i].price;
M[i].i = M[i].p / M[i].s;
}
for(int i=0;i<N;i++)//对结构体数组进行冒泡排序,大的在前,小的在后
{
for(int j=0;j<N-i;j++)
{
if(M[i].i<M[i+1].i)
{
double sum,price,ind;
sum = M[i].s;
price = M[i].p;
ind = M[i].i;
M[i].s = M[i+1].s;
M[i].p = M[i+1].p;
M[i].i = M[i+1].i;
M[i+1].s = sum;
M[i+1].p = price;
M[i+1].i = ind;
}
}
}
cout<<M[1].s<<endl;//输出第二个大的
cout<<M[1].p<<endl;
cout<<M[N-1].s<<endl;//输出最后一个小的,(数组长度为N,所以最后一个下标为N-1}
cout<<M[N-1].p<<endl;
}
想问一下,为什么长度为N的结构体数组,输出下标为N-1时出现了错误?