| ||||||||||
| 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 | |||||||||
帮我找找错误#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: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator