1 #include <string.h> 2 #include<cstdio> 3 #include<stdio.h> 4 #include <iostream> 5 #include<string> 6 using namespace std; 7 int check(char s,string ch) 8 { 9 for (int k = 0; k<ch.size(); k++) 10 if (!(s-ch[k])) 11 { 12 if (!(ch[k + 1]- ':')) 13 return 2;//有这个命令 且带参数 14 else 15 return 1;//有这个命令 不带参数 16 } 17 return 0;//没这个参数 18 } 19 struct node 20 { 21 bool vis; 22 string num; 23 int no; 24 char e; 25 }; 26 int main() 27 { 28 char ch[60]; cin >> ch; 29 int n,i,j,k,count; cin >> n;getchar(); 30 string str, ans[20]; 31 node zm[26]; bool flag; 32 for (i = 0; i < n; i++) 33 { 34 count = 0; 35 for (k = 0; k < 26; k++) 36 { 37 zm[k].e = k + 97; 38 zm[k].vis = 0; 39 zm[k].no = 0; 40 zm[k].num.clear(); 41 } 42 getline(cin, str); 43 for(j=3;j<str.size();j++) 44 if (!(str[j] -'-')) 45 { 46 if (check(str[j + 1], ch)) 47 { 48 if (check(str[j + 1], ch) == 1)//不带参数 49 { 50 if (!zm[str[j + 1] - 97].vis)//没有访问过 51 { 52 zm[str[j + 1] - 97].vis = 1; 53 zm[str[j + 1] - 97].no = ++count; 54 } 55 56 if (str[j + 3] - '-')//后面如果跟了参数或者别的 57 break; 58 j = j + 2; 59 } 60 else if (check(str[j + 1], ch) == 2)//带参数 61 if (str[j + 3]<'0' || str[j + 3]>'9') 62 break; 63 else 64 { 65 if (!zm[str[j + 1] - 97].vis) 66 { 67 zm[str[j + 1] - 97].vis = 1; 68 zm[str[j + 1] - 97].no = ++count; 69 } 70 k = j + 3; 71 zm[str[j + 1] - 97].num.clear(); 72 while (str[k] > '0'&&str[k] < '9') 73 { 74 zm[str[j + 1] - 97].num.push_back(str[k++]); 75 } 76 j = k-1; 77 } 78 } 79 else 80 break; 81 } 82 node temp; 83 for(k=0;k<26;k++) 84 for (j = k + 1; j < 26; j++) 85 { 86 if (zm[j].no < zm[k].no) 87 { 88 temp = zm[j]; 89 zm[j] = zm[k]; 90 zm[k] = temp; 91 } 92 } 93 for (k = 0; k < 26; k++) 94 { 95 if (zm[k].vis) 96 { 97 //cout << '-' << zm[k].e<<' '; 98 ans[i].push_back('-'); 99 ans[i].push_back(zm[k].e); 100 ans[i].push_back(' '); 101 } 102 if (!zm[k].num.empty()) 103 { 104 //cout << zm[k].num << ' '; 105 ans[i]+= zm[k].num; 106 ans[i].push_back(' '); 107 } 108 } 109 //cout << endl; 110 } 111 for (i = 0; i < n; i++) 112 { 113 cout << "Case " << i + 1 << ':'; 114 cout << ans[i].c_str() << endl; 115 } 116 return 0; 117 }