poj 1706.References

References

#include<iostream.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>

char refDes[1024][256];//旧文献边编号为i的文献的内容 
int nmapo[1024];//新文献编号为i的文献,其旧文献编号为nmapo[i]. 
int omapn[1024];//旧文献编号为i的文献,其新文献编号为omapn[i]. 
int refNewNu;//当前文献的新文献编号. 

//判断line是否为空行,即不包含任何字符或值包含空格.是返回true否则返回false.
bool EmptyLine(const char* line);

int main()
{
	char line[256];//当前行 
	char digs[8];//临时存储数字字符串. 
	int i, j, k;
	
	refNewNu=1;//初始化新文献编号为1 
	while(cin.getline(line,256)){
		if(EmptyLine(line)){
			continue;
		}
		if(line[0]=='['){//当前行为文献段落首行 
			//得到旧文献编号 
			i=1;
			while(isdigit(line[i])){
				digs[i-1]=line[i];
				i++;
			}
			digs[i-1]='\0';
			j=atoi(digs); 
			//得到文献内容
			strcpy(refDes[j],line+i+1);
			strcat(refDes[j],"\n");
			while(cin.getline(line,256)){
				if(EmptyLine(line)){
					break;
				}
				strcat(refDes[j],line);
				strcat(refDes[j],"\n");
			} 
		}
		else{//当前行为段落首行 
			//读入并处理正文段落的第一行,并输出. 
			while(!EmptyLine(line)){
				i=0;
				while(line[i]!='\0'){
					if(line[i]=='['){
						//得到文献的旧文献编号. 
						i++;
						j=0;
						while(isdigit(line[i])){
							digs[j]=line[i];
							i++;
							j++;
						}
						digs[j]='\0';
						k=atoi(digs);
						//判断是否已对当前文献重新编号并进行相应处理. 
						if(omapn[k]==0){
							omapn[k]=refNewNu;
							nmapo[refNewNu]=k;
							refNewNu++;
						}
						//输出文献的新文献编号. 
						cout<<'['<<omapn[k]<<']';
					}
					else{
						cout<<line[i];
					}
					i++;
				}
				cout<<endl;
				cin.getline(line,256);
			}
			cout<<endl;
		} 
	}
	
	//对所有文献按新文献编号从小到大顺序输出. 
	for(i=0;i<refNewNu;i++){
		cout<<'['<<i<<']'<<refDes[nmapo[i]]<<endl;
	}
	return 0;
}

bool EmptyLine(const char* line)
{
	int i=0;
	while(line[i]!='\0'){
		if(line[i]!=' '){
			return false;
		}
		i++;
	}
	return true;
}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值