用结构体数组存放某超市商品销售情况,每个商品销售记录由商品代码dm(字符型4位),商品名称mc(字符型10位),单价dj(实型),数量sl(整型),金额je(实型)五部分组成。其中:金额=单价*数量计算得出。编写一个程序输入20条销售记录并存入结构体数组中,然后按金额从小到大进行排列,若金额相等,则按商品代码从小到大进行排列,最后将排列结果输出。
#include <iostream>
#include <string>
using namespace std;
struct products
{
string dm;
string mc;
int dj;
int sl;
int je;
};
void sore(products p[]);
int main()
{ products p[20];
int i;
for(i=0;i<20;i++)
cin>>p[i].dm>>p[i].mc>>p[i].dj>>p[i].sl;
for(i=0;i<20;i++)
{p[i].je=0;
p[i].je=p[i].dj*p[i].sl;
}
sore(p);
cout<<endl;
for(i=0;i<20;i++)
{cout<<p[i].dm<<' '<<p[i].mc<<' '<<p[i].dj<<' '<<p[i].sl<<' '<<p[i].je;
cout<<endl;}
return 0;
}
void sore(products p[])
{ int i,j;
products temp;
for(i=0;i<19;i++)
for(j=0;j<19-i;j++)
{ if(p[j].je>p[j+1].je)
{ temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
else if(p[j].je==p[j+1].je)
if(p[j].dm>p[j+1].dm)
{temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}