您的位置:首页 > 其它

poj1002 487-3279

2014-06-17 21:19 295 查看
题目大意:
电话号码用一种能让人记住的方式输入,然后统计号码:有重复的输出号码,并输出重复次数;如果没有重复,则输出Noduplicates.

题目分析:
本来关键在于怎么统计电话号码,用一个大型数组,数组下标表示电话号码,数组内容表示电话号码重复的次数。

题目代码:

#include
#include
using namespacestd;
int count[10000000]; //用来对电话号码进行计数

voidchangeToInt(char *phone);
voidchangeToChar(int x);

int main()
{
char phone[20];
bool flag;
int n,len;
int i,j;
cin>>n;
memset(count,0,sizeof(count));
while(n--)
{
cin>>phone;
len=strlen(phone);

for(i=0;i
{
switch(phone[i])
{
case 'A':
case 'B':
case 'C':
{phone[i]='2';break;}

case 'D':
case 'E':
case 'F':
{phone[i]='3';break;}

case 'H':
case 'I':
case 'G':
{phone[i]='4';break;}

case 'J':
case 'K':
case 'L':
{phone[i]='5';break;}

case 'M':
case 'N':
case 'O':
{phone[i]='6';break;}

case 'P':
case 'R':
case 'S':
{phone[i]='7';break;}

case 'T':
case 'U':
case 'V':
{phone[i]='8';break;}

case 'W':
case 'X':
case 'Y':
{phone[i]='9';break;}
}
}

changeToInt(phone);

}
flag=true; //判断是否有重复的号码
for(i=0;i<10000000;i++)
{
if(count[i]>1)
{
changeToChar(i);
cout<<""<<count[i]<<endl;
flag=false;
}

}

if(flag)
cout<<"Noduplicates."<<endl;

return 0;
}

void changeToInt(char*phone) //转换为int用来计数
{
int len=strlen(phone);
int sum=0,i;
for(i=0;i
{
if(phone[i]=='-')
continue;

else
{
sum=10*sum+(phone[i]-'0');
}
}

count[sum]++;
}

void changeToChar(int x) //转换为char类型,如(0000000时sum=0,输出就要转换)
{
int temp=1000000;
int i;
for(i=1;i<=8;i++)
{
if(i==4)
{
cout<<"-";
continue;
}

cout<<x/temp;
x=x%temp;
temp=temp/10;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: