top1编程
← 返回题目
题解

【入门】订单结算

1 条题解

  • 0
    @ 2026-7-28 22:09:33
    #include<bits/stdc++.h>
    using namespace std;
    struct bt{//订单列表的每个订单的数据类型 
    	string mc;
    	double jg; 
    }a[100005],dd;
    bool cmp(bt a,bt b){
    	if(a.mc<b.mc){
    		return true;
    	}else{
    		return false;
    	}
    }
    int main(){
    	int n;
    	cin>>n;
    	int s=0;//最开始订单列表里面的订单为0 
    	for(int i=1;i<=n;i++){
    		//获得订单的商品名称以及价格
    		cin>>dd.mc>>dd.jg;
    		int falg=1;//默认订单列表中没有
    		//找 
    		for(int j=1;j<=s;j++){
    			if(a[j].mc==dd.mc){//原来存储的商品中没有
    				a[j].jg+=dd.jg;//累加商品价格
    				falg=0; //存在过标记
    				break;
    			}
    		}
    		if(falg==1){//没找到就添加进订单列表中 
    			s++;//商品数量+1
    			a[s].mc=dd.mc;
    			a[s].jg=dd.jg*0.75;//第一个商品
    		} 
    	}
    	sort(a+1,a+s+1,cmp);
    	for(int i=1;i<=s;i++){
    		cout<<a[i].mc<<" ";
    		cout<<fixed<<setprecision(1)<<a[i].jg<<endl;
    	}
    	return 0;
    }
    
    • 1