/*
(1)在定义对象时,能够为字符串清空;
(2)定义变换构造函数,能够为字符串赋以给定的字符串;
(3)定义复制构造函数;
(4)定义成员函数,能够为字符串输入数据;
(5)定义成员函数,能够将字符串显示出来;
(6)定义成员函数,用于找出每个字符串的最小值及其个数,最小值由函数值返回,个数由参数带回;
(7)定义成员函数,用于为字符串按从小到大顺序排序。
(8)定义main函数,合理地调用上述每个函数。
*/
#include<iostream>
#include<string>
using namespace std;
class m_string
{
public:
m_string();
m_string(string s[10]);
m_string(const m_string &s);
void print();
void setdata();
~m_string();
char* mindata(int num[]);
void InsertSort();
private:
string data[10];
};
char ch[10];
m_string::m_string()
{
for(int i = 0; i < 10; i++)
{
data[i] = "";
}
}
m_string::m_string(const m_string &s)
{
for(int i = 0; i < 10; i++)
{
data[i] = s.data[i];
}
}
m_string::m_string(string s[10])
{
for(int i = 0; i < 10; i++)
{
data[i] = s[i];
}
}
void m_string::print()
{
cout << "数据如下:" << endl;
for(int i = 0; i < 10; i++)
{
cout << data[i] << endl;
}
cout << endl;
}
void m_string::setdata()
{
cout << "请输入数据:" << endl;
for(int i = 0; i < 10; i++)
{
cin >> data[i];
}
}
char* m_string::mindata(int num[])
{
for(int i = 0; i < 10; i++)
{
ch[i] = data[i][0];
num[i] = 0;
for(int j = 0; data[i][j] != '\0'; j++)
{
if(data[i][j] < ch[i])
{
ch[i] = data[i][j];
num[i] = 0;
}
if(data[i][j] == ch[i])
num[i]++;
}
}
return ch;
}
void m_string::InsertSort()
{
int i = 9; //初始时,最后位置保持不变
while(i> 0)
{
int pos = 0; //每趟开始时,无记录交换
for(int j = 0; j< i; j++)
if(data[j]>data[j + 1])
{
pos = j; //记录交换的位置
string tmp = data[j]; data[j] = data[j + 1]; data[j + 1] = tmp;
}
i = pos; //为下一趟排序作准备
}
}
m_string::~m_string()
{
}
int main()
{
string a[10] = { "a12","b22","c23","d33","a35","c55","e66","t45","f75","g88" };
int count[10];
m_string s1;
cout << "s1";
s1.print();
m_string s3(a);
cout << "s3";
s3.print();
m_string s2(s3);
cout << "s2";
s2.print();
s1.setdata();
char *ch = s1.mindata(count);
cout << "最小值依次为:" << ch << endl;
cout << "对应个数为: ";
for(int i = 0;i < 10;i++)
cout << count[i];
cout << endl;
s2.InsertSort();
s2.print();
return 0;
}
/*
1232
15496
5462545
552468852
55879545
3325482
215526875
5884569846
86598898986
878987879
*/