关于c++类字符串管理的一个小程序

/*
(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
*/


评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值