求解一道C++题目 谢谢

购物节题目描述双11网上商城举行优惠活动,每件商品当天第一个订单可以打75折。双11当天网站依次收到了N(N≤100000)个订单,订单的数据形式是:商品名价格,商品名是... 购物节
题目描述
双11网上商城举行优惠活动,每件商品当天第一个订单可以打75折。双11当天网站依次收到了N(N≤100000)个订单,订单的数据形式是:商品名 价格,商品名是长度不超过20的字符串。请按商品名字典序,输出当天的每种商品名及其总销售额。
输入输出格式
输入格式:
第一行,一个正整数N。
后面N行,每行包括一个字符串和一个浮点数,由空格分开,分别表示商品名和价格。
输出格式:
M行,表示M种商品每行包括一个字符串和一个浮点数,由空格分开,分别表示商品名和销售总额。商品名按照字典序排列输出,销售总额保留小数点后两位数字。
输入输出样例
输入样例#1:
6
shoes 80
tshirt 100
pants 30
shoes 20
tshirt 200
pants 80
输出样例#1:
pants 102.50
shoes 80.00
tshirt 275.00
展开
 我来答
White_MouseYBZ
2018-12-20 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6596万
展开全部
//#include "stdafx.h"//If the vc++6.0, with this line.
#include <iostream>
using namespace std;
struct s11{
char name[21];   
double upr;
}s[100000],t[50000];
int main(int argc,char *argv[]){   
s11 x;
int i,j,k,N;
cout << "please enter N(int 0<N<100001)...\n";
if(!(cin >> N) || N<1 || N>100000){
cout << "Input error, exit...\n";
return 0;
}
cout << "Enter commodity name and unit price...\n";
for(i=0;i<N;i++)
cin >> s[i].name >> s[i].upr;
for(j=i=0;i<N;i++){
for(k=0;k<j;k++){
if(strcmp(s[i].name,t[k].name)==0){
t[k].upr+=s[i].upr;
break;
}

}
if(k>=j){
s[i].upr*=0.75;
t[j]=s[i];
for(k=j;j && strcmp(t[k].name,t[k-1].name)<0;k--)
x=t[k],t[k]=t[k-1],t[k-1]=x;
j++;
}
}
cout << "=============\n";
cout.setf(ios::fixed);
cout.precision(2);
for(i=0;i<j;i++)
cout << t[i].name << ' ' << t[i].upr << endl;
return 0;
}

运行样例:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式