程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU1263:水果

HDU1263:水果

編輯:C++入門知識

Joe經營著一個不大的水果店.他認為生存之道就是經營最受顧客歡迎的水果.現在他想要一份水果銷售情況的明細表,這樣Joe就可以很容易掌握所有水果的銷售情況了.

 


Input
第一行正整數N(0<N<=10)表示有N組測試數據.
每組測試數據的第一行是一個整數M(0<M<=100),表示工有M次成功的交易.其後有M行數據,每行表示一次交易,由水果名稱(小寫字母組成,長度不超過80),水果產地(小寫字母組成,長度不超過80)和交易的水果數目(正整數,不超過100)組成.

 


Output
對於每一組測試數據,請你輸出一份排版格式正確(請分析樣本輸出)的水果銷售情況明細表.這份明細表包括所有水果的產地,名稱和銷售數目的信息.水果先按產地分類,產地按字母順序排列;同一產地的水果按照名稱排序,名稱按字母順序排序.
兩組測試數據之間有一個空行.最後一組測試數據之後沒有空行.

 


Sample Input
1
5
apple shandong 3
pineapple guangdong 1
sugarcane guangdong 1
pineapple guangdong 3
pineapple guangdong 1


Sample Output
guangdong
   |----pineapple(5)
   |----sugarcane(1)
shandong
   |----apple(3)

題目已經很明白了,就不需要我多說了

一道簡單的結構體排序

[cpp]
#include <stdio.h>  
#include <string.h>  
#include <algorithm>  
using namespace std; 
 
struct Node 

    char name[100]; 
    char space[100]; 
    int num; 
} f[110]; 
 
int cmp(Node x,Node y) 

    if(strcmp(x.space,y.space)) 
        return strcmp(x.space,y.space)<0; 
    return strcmp(x.name,y.name)<0; 

 
int main() 

    int t,n,i; 
    scanf("%d",&t); 
    while(t--) 
    { 
        scanf("%d%*c",&n); 
        for(i = 0; i<n; i++) 
        { 
            scanf("%s%s%d",f[i].name,f[i].space,&f[i].num); 
        } 
        sort(f,f+n,cmp); 
        char di[100],min[100]; 
        int cnt = 0,flag = 1; 
        strcpy(di,f[0].space); 
        strcpy(min,f[0].name); 
        for(i = 0; i<n; i++) 
        { 
            if(strcmp(di,f[i].space)) 
            { 
                strcpy(di,f[i].space); 
                strcpy(min,f[i].name); 
                flag = 1; 
                cnt = 0; 
            } 
            if(!strcmp(di,f[i].space)) 
            { 
                if(flag) 
                { 
                    printf("%s\n",di); 
                    flag = 0; 
                } 
                if(!strcmp(min,f[i].name)) 
                { 
                    while(!strcmp(min,f[i].name) && !strcmp(di,f[i].space))//產地與水果名都必須相同  
                    { 
                        cnt+=f[i].num; 
                        i++; 
                    } 
                    printf("   |----%s(%d)\n",min,cnt); 
                    strcpy(min,f[i].name); 
                    i--; 
                    cnt = 0; 
                } 
            } 
        } 
        if(t) 
        printf("\n"); 
    } 
 
    return 0; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved