⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.cpp

📁 编程习题 2974电话簿 的代码
💻 CPP
字号:
#include<iostream>
#include<string>
#include<memory>
#include<cmath>
#include<iomanip>
#define len 20
int compare(const void*a,const void*b);

using namespace std;
int main()
{
	int n;
	cin>>n;
	cin.get();
	char a[26]={'2','2','2','3','3','3','4','4','4','5','5','5','6','6','6','7','7','7','7','8','8','8','9','9','9','9'};
	char (*num)[8]=new char[n][8];
	char (*str)[len]=new char[n][len];
	int i=0,j=0,k=0;
	
	for(i=0;i<n;i++)
	{
		cin.getline(str[i],len);
		for(j=0;str[i][j]!='\0';j++)
		{
			if((str[i][j]>='A')&&(str[i][j]<='Z'))
			{
				int temp=str[i][j]-'A';str[i][j]=a[temp];
			}
			if(str[i][j]!='-')
			{
				num[i][k]=str[i][j];
				k++;
			}
		}
		num[i][k]='\0';
	}
	int unit=sizeof(num[0]);
	qsort((void*)num,n,unit,compare);
	//输出
	bool prime=false;
	int jishu[10000];
	memset(jishu,0,100000);
	int num_i=0;
    jishu[0]=1;
	for(i=1;i<n;i++)
	{
		if(!strcmp(num[i],num[i-1]))
		{
			prime=true;
			jishu[num_i]++;
		}
		else
		{
			num_i++;	jishu[num_i]++;
			if(jishu[num_i-1]>1)
			{
				for(j=0;j<3;j++)
					cout<<num[num_i-1][j];
				cout<<'-';
				for(j=3;j<7;j++)
					cout<<num[num_i-1][j];
				cout<<' '<<jishu[num_i-1]<<endl;
			}
		}
	
	}
	if(!prime)
		cout<<"No duplicates"<<endl;

	delete []num;
	delete []str;
	return 0;
}
int compare(const void*a,const void*b)
{
	return strcmp(*(char**)a,*(char**)b);
}

	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -