求解一道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 展开
题目描述
双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 展开
1个回答
展开全部
//#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;
}
运行样例:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询