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 zhouweigang_ at 2005-07-01 12:11:59 on Problem 1002
这是我写的程序,其中运用到stl的list和一个排序算法的算法,可是老是出现runtime error 哪位高手指点一下小弟是什么原因啊!!!!
小弟在这先谢谢各位了!!!!!!!!!!!!!!!!!!!!!
#include<iostream>
#include<list>
#include<algorithm>
#include<string>
using namespace std;
class Number
{
public:
	Number(string str)
	{
	 telephone_num=str;//电话号码
	 total=1;//相同电话号码的个数
	}
  void Translate();
  bool operator()(Number&num)
  {
   if(telephone_num==num.telephone_num)
	   return true;
   else
	   return false;
  }
 friend bool operator<(Number&num1,Number&num2)
  {
   return num1.telephone_num<num2.telephone_num;
  }
  void Increase()
  {
   total++;
  }
  int Return()
  {
   return total;
  }
  void show()
  {
   cout<<telephone_num<<"   "<<total<<endl;
  }
private:
	string telephone_num;
	int total;
};
void Number::Translate()//翻译号码
{
	string L="";//纪录初步翻译后的电话号码
	string M="";//记录最终反以后的电话号码
	int j=0;//纪录翻译数据的个数
	for(int i=0;i<telephone_num.length();i++)
	{
		switch(telephone_num[i])
		{
		case 'A':
		case 'B':
		case 'C':
			L+="2";
			break;
		case 'D':
		case 'E':
		case 'F':
			L+="3";
			break;
		case 'G':
		case 'H':
		case 'I':
			L+="4";
			break;
		case 'J':
		case 'K':
		case 'L':
			L+="5";
			break;
		case 'M':
		case 'N':
		case 'O':
			L+="6";
			break;
		case 'P':
		case 'R':
		case 'S':
			L+="7";
			break;
		case 'T':
		case 'U':
		case 'V':
			L+="8";
			break;
		case 'W':
		case 'X':
		case 'Y':
			L+="9";
			break;
		default:
			L+=telephone_num[i];
			break;
		}
	}
	for(i=0;i<L.length();i++)
	{
		if(j==3)
		{
			M+="-";
			j=-100;
		}
		if(L[i]!='-')
		{
			M+=L[i];
			j++;
		}
		
	}
telephone_num=M;
}
void main()
{
	list<Number> mylist;
    int number;
    cin>>number; 
	string Num[100];
	for(int i=0;i<number;i++)
	{
		cin>>Num[i];
	    Number mynum(Num[i]);
		mynum.Translate();
		list<Number>::iterator p=mylist.begin();
		p=find_if(mylist.begin(),mylist.end(),mynum);
		if(p!=mylist.end())
		{
		 p->Increase();
		}
		else
		 mylist.push_back(mynum);
	}
	mylist.sort();
	list<Number>::iterator q=mylist.begin();
	while(q!=mylist.end())
	{
		if(q->Return()>1)
		q->show();
        q++;
	}
}


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