#include
#include
题目是输入几个字符串(包含大写字母、数字、—,),按照题目给定的对应规律把字符串中的特定字符变为对应数字,形成号码(转换后的号码长度为7),然后按顺序输出号码以及对应的出现次数。。。
using namespace std;
class tel
{
public:
int num;
string ori;string *alt;
tel(int n);
tel sort();
void print();
friend char search (char);
};
void tel::print()
{略}
tel tel::sort()
{
string *begin = alt, *end = alt+num;
if(num== 1) return *this;
const char p=alt->c_str();//测试行
cout<<p<<endl;
//这里可以显示正确alt中的字符串
for(string* i = begin; i != end; i++)
for(string* j = i; j != begin; j--)
if( *(j-1) > *j )
{
string temp(*(j-1));
*(j-1) = *j;
*j = temp;
}
const char* q=alt->c_str();//测试行
cout<<q<<endl;//测试行输出结果和上面一样。。为什么没有发生交换?
return *this;
}
char search (char a)
{
实现问题无关功能,略
}
tel::tel(int n)//题目是输入几个字符串(包含大写字母、数字、—,),按照题目给定的对应规律把字符串中的特定字符变为对应数字,形成号码(转换后的号码长度为7)
{
num=n;
ori=new string [num];
alt=new string [num];
for (int i=0; i!=num;i++)
{
cin>>ori[i];
int k=0;
int len=(int)strlen(ori[i].c_str());
for (int j=0;j!=len;j++)
{
if(ori[i][j]>=65&&ori[i][j]<=90)
{ alt[i][k]=search(ori[i][j]);k++;}
else if(ori[i][j]>=48&&ori[i][j]<=57)
{
alt[i][k]=ori[i][j];k++;
}
else continue;
}
}
}
int main()
{
int num;
cin>>num;
tel directory(num);
directory.sort().print();
return 0;
}