Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
各位能看看为什么PE吗?我真的没有时间再搞这题了!拜托了!!T口T 貌似空行什么的也没有少,全为空格的空行也考虑了,我真的没办法了…… #include <iostream> #include <cstring> #include <stdlib.h> using namespace std; struct reference{ int rank; char str[3][100]; }; char *end1="Works [", *end2="] can be obtained via Internet.", file[40001][100]; int comp( const void *, const void *); int main(){ char getin[100]; int nRank=0, i, j, reNum, hang=0, temp; struct reference refer[999]; memset(refer, 0, sizeof(refer)); memset(file, 0, sizeof(file)); while (cin.getline(getin, 100)){ if (getin[0]=='\0') continue; for (i=0; getin[i]==' ';i++); if (getin[i]=='\0') continue; if (strstr(getin, end1)!=NULL && strstr(getin, end2)!=NULL) { //结束语 j=0; for (i=0; getin[i]!='\0';i++){ if (getin[i]=='[') { file[hang][j++]='['; reNum=0; for(i++; getin[i]!=']'; i++) reNum= reNum*10+ getin[i]-'0'; for (temp=refer[reNum].rank; temp>0; temp=temp/10) file[hang][j++]='0'+ temp%10; } file[hang][j++]=getin[i]; } file[hang++][j]='\0'; break; } if (getin[0]=='[') { //the reference; reNum=0; for(i=1; getin[i]!=']'; i++) reNum= reNum*10+ getin[i]-'0'; j=0; while(getin[0]!='\0'){ strcpy(refer[reNum].str[j++], getin+i); cin.getline(getin, 100); i=0; } } else { //regular files record; while(getin[0]!='\0'){ j=0; for (i=0; getin[i]!='\0';i++){ if (getin[i]=='[') { nRank++; file[hang][j++]='['; for (temp=nRank; temp>0; temp=temp/10) file[hang][j++]='0'+ temp%10; reNum=0; for(i++; getin[i]!=']'; i++) reNum= reNum*10+ getin[i]-'0'; refer[reNum].rank=nRank; } file[hang][j++]=getin[i]; } file[hang][j]='\0'; hang++; cin.getline(getin,100); } file[hang++][0]='\0'; } } qsort(refer, 999, sizeof(reference), comp); i=0; while(i<=hang) cout<<file[i++]<<endl; i=999-nRank; while(i<999){ cout<<'['<<refer[i].rank; j=0; while(refer[i].str[j][0]!='\0'&&j<3) cout<<refer[i].str[j++]<<endl; cout<<endl; i++; } return 0; } int comp(const void * a, const void * b){ return ((const reference *)a)->rank-((const reference *)b)->rank; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator