栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

2022.6.26 C++——使用面向对象的思想实现栈和日期

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022.6.26 C++——使用面向对象的思想实现栈和日期

  1. 实现日期
//显示日期类
class Date
{
private:
	int year;
	int month;
	int day;
	bool tag;
	bool Is_Leap(int year)//判断是否为闰年
	{
		return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
	}
	int Get_YM_Day(int year, int month)
	{
		static int day[] = { 29,31,28,31,30,31,30,31,31,30,31,30,31 };
		                 //   0  1  2  3  4  5  6  7  8  9  10 11 12  
		if (month == 2 && Is_Leap(year))
		{
			month = 0;
		}
		return day[month];
	}
public:
	void Showdate() const
	{
		if (tag)
		{
			cout << "year: " << year << " month: " << month << " day:" << day << endl;
		}
		else
		{
			cout << "date is error" << endl;
		}
	}
public:
	Date(int y = 1, int m = 1,int d = 1):year(y),month(m),day(d),tag(true)
	{
		if (y < 1 || m < 1 || m>12 || d < 1 || d > Get_YM_Day(year,month))
		{
			tag = false;
		}
	}

};
int main()
{
	Date d1(2022, 2, 31); 
	d1.Showdate();
	Date d2(2022, 6, 26);
	d2.Showdate();

	return 0;
}

运行结果:

2. 实现栈

class Mystack
{
private:
	enum{STACK_INIT_SIZE=10,STACK_INC_SIZE=2};
	int* _data;//指向连续空间
	int _capa;//容量大小
	int _top;//栈顶指针,初始化为-1
public:
	Mystack() :_data(nullptr), _capa(STACK_INIT_SIZE), _top(-1)//缺省的构造函数
	{
		_data = new int[_capa];
	}
	Mystack(int sz) :_data(nullptr), _capa(sz), _top(-1)//带参的构造函数
	{
		_data = new int[_capa];
	}
	~Mystack()  //析构函数
	{
		delete[]_data;
		_data = nullptr;
		_capa = 0;
		_top = -1;
	}
	size_t Size()//元素个数
	{
		return _top + 1;//初始化给的是-1,因此当前_top+1
	}
	bool Empty()  //判空
	{
		//return _top == -1;
		return Size() == 0;
	}
	bool Full()  //判满
	{
		return Size() == _capa;
	}
	bool Push(int val) //入栈
	{
		if (Full())
		{
			return false;
		}
		else
		{
			_top = _top + 1;//_top++
			_data[_top] = val;
			//_data[++_top]=val;
			return true;
		}
	}
	int &Top()//取栈顶元素
	{
		return _data[_top];
	}
	const int& Top() const
	{
		return _data[_top];
	}
	bool Pop()//出栈
	{
		if (Empty())return false;
		_top = _top - 1;
		return true;
	}
	bool GetPop(int& val)//取栈顶和出栈一起
	{
		if (Empty())
		{
			return false;
		}
		else
		{
			val = _data[_top];
			_top -= 1;
			return true;
		}
	}
};
int main()
{
	Mystack mys;
	for (int i = 0; i < 10; ++i)//入栈
	{
		cout << "Push" << i << " " << mys.Push(i) << endl;
	}
	
	int val;
	while (mys.GetPop(val))
	{
		cout << val << endl;
	}

	return 0;

}

运行结果:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/994251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号