Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

帮我找找错误

Posted by 00403022 at 2005-04-23 11:39:56 on Problem 2403
#include<iostream.h>
#include<string.h>
char word[100][200];                 //word存有价值的单词
long value[100];                     //value存单词的价值
int m,n;                             //题目输入的m和n 
int xh1,xh2;                         //循环变量
char *string_to_search;              //每次将读入的一行存在这个字符指针中,并对此行检索
long total_value;                    //存总 工资?
char *p;                             //用在strstr函数中

void input_words()                      //输入部分
{
	cin>>m>>n;
	for (xh1=0;xh1<m;xh1++)
	{
		cin.ignore();
		cin.getline(word[xh1],200,' ');
		word[xh1][cin.gcount()]='\0';
		cin>>value[xh1];
	}
}

void compute()
{
	total_value=0;                   //初始化
	cin.ignore();
	string_to_search=new char[200];
	cin.getline(string_to_search,200);
	string_to_search[cin.gcount()]='\0';
	while (*string_to_search!='.')    //这段没结束,继续统计
	{
		for (xh2=0;xh2<m;xh2++)
		{
			p=string_to_search;
			p=strstr(p,word[xh2]);      //检索字符串
			while (p!=NULL)
			{
				if (p==string_to_search &&
					p+strlen(word[xh2])==string_to_search+strlen(string_to_search) ) 
					  total_value+=value[xh2];
				else
					if (p>string_to_search)
					{
						if (p+strlen(word[xh2])==string_to_search+strlen(string_to_search) && 
							*(p-1)==' ')
						    	total_value+=value[xh2];
						else 
							if (*(p-1)==' ' && *(p+strlen(word[xh2]))==' ') 
								total_value+=value[xh2];
					}
					else
					{
						if (*(p+strlen(word[xh2]))==' ')  total_value+=value[xh2];
					}
				//以上部分判断是否有单词包含关系 如word 和 or ,并对total_value累加
				p++;  //p向后移,为下一句做准备 
				p=strstr(p,word[xh2]);     //检索string_to_search中的下一个p
			}
			
		}
		delete string_to_search;
		string_to_search=new char[200];
		cin.getline(string_to_search,200);
		string_to_search[cin.gcount()]='\0';
	}
	delete string_to_search;
	cout<<total_value<<endl;
}



void main()
{
	input_words();
	for (xh1=0;xh1<n;xh1++)
		compute();
}


另外,对这样的程序调试有没有好办法,fstream cin后好像cin.getline不能用了

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator