面向对象编程作业2

设计一个类,用于对字符串进行管理。要求:

(1)在定义对象时,能够确定字符串的最大长度并清空字符串。

(2)定义成员函数input, 用于从键盘为字符串输入数据。

(3)定义运算符重载函数,用于判断两个对象中的字符串是否相同。

(4)定义成员函数exchange,用于互换字符串中ASCII码最大和最小的字符(需考虑字符串中存在多个最大和最小字符的情况)。

(5)定义成员函数disp,用于显示字符串。

(6)定义main函数,合理地调用上述每个函数。


#include<iostream>
#include<string.h>
using namespace std;
class cString
{
private:
	char *a;
	int len;
public:
	cString(int n);
	~cString();
	void input();
	bool operator==(const cString &second);
		void exchange();
		void disp();

};

cString::cString(int n = 0)
{
	len = n > 0 ? n : 0;
	a = new char[len];
	for (int i = 0; i < len; i++)
	{
		a[i] = 0;
	}

}
cString::~cString()
{
	delete[]a;
}
void cString::input()
{
	cout << "please enter the string of" <<'\0' <<len<<'\0'<< "numbers" << endl;
	for (int i = 0; i < len; i++) {
		cin >> a[i];

	}
}
	
bool cString::operator == (const cString &second)
{
	for (int i = 0; i < len; i++)
	{
		if (a[i] != second.a[i])
			return false;
		else
			return true;

	}
 }
void cString::exchange()
{
	char max_ascii = a[0];
	char min_ascii = a[0];
	for (int i = 0; i < len; i++)
	{
		max_ascii = (a[i] > max_ascii ? a[i] : max_ascii);

	}
	for (int i = 0; i < len; i++)
	{
		min_ascii = (a[i] < min_ascii ? a[i] : min_ascii);

	}
	//cout << max_ascii<<min_ascii<<'\n';
	if (max_ascii == min_ascii)
	{
		cout << "the two strings equal" << endl;
	}
	else
	{
		for (int i = 0; i < len; i++)
			if (a[i] == max_ascii)
			{
				a[i] = min_ascii;
			}
			else if (a[i] == min_ascii)
			{
				a[i] = max_ascii;
			}


	}
}
void cString::disp()
{
	for (int i = 0; i < len && a[i] != '\0'; i++) 
	{
		cout << a[i];
	}
	cout<<'\n';
	
}
int main()
{
	int length = 0;
	cout << "please input the length of the first string" << endl;
	cin >>length;
	cString s(length);
	s.input();
	cout << "please input the length of the second string" << endl;
	cin >> length;
	cString c(length);
	c.input();
	cString t = s;
	if (t == s)
	{
		cout << "the two strings equal" << endl;
	}
	else
	{ 
		cout << "the two strings not equal" << endl; 
	}
	if (t == c)
	{
		cout << "the two strings equal" << endl;
	}
	else
	{
		cout << "the two strings not equal" << endl;
	}
	s.exchange();
	s.disp();
	system("pause");
	return 0;
}



在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值