ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

林荫的ACM生涯——Class和Struct的一部分模板

2022-06-27 17:02:37  阅读:158  来源: 互联网

标签:return Struct int void ACM element Vector include Class


------------恢复内容开始------------

有关Class类

不要用private,否则没办法以X.XX的形式引用

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
class T_counter
{
	public:
	T_counter(int x)
	{
		element=x;
	}
	void Changeadd(int x)
	{
		element+=x;
	}
	void Changereduce(int x)
	{
		element-=x;
	}
	void Changemultiply(int x)
	{
		element=element*x;
	}
	void Changedivide(int x)
	{
		element=element/x;
	}
	void Changeleftbitmove(int x)
	{
		while(x)
		{
			x--;
			element=element<<1;
		}
	}
	void Changerightbitmove(int x)
	{
		while(x)
		{
			x--;
			element=element>>1;
		}
	}
	int add(int x)
	{
		return x+element;
	}
	int reduce(int x)
	{
		return element-x;
	}
	int multiply(int x)
	{
		return element*x;
	}
	int divide(int x)
	{
		return element/x;
	}
	int leftbitmove(int x)
	{
		int ssd=element;
		while(x)
		{
			x--;
			ssd=ssd<<1;
		}
		return ssd;
	}
	int rightbitmove(int x)
	{
		int ssd=element;
		while(x)
		{
			x--;
			ssd=ssd>>1;
		}
		return ssd;
	}
	int element;
};
class T_vector
{
	public:
	T_vector(int l,int basic[])
	{
		length=l;
		for(int i=1;i<=l;i++)
		{
			element[i]=basic[i];
		}
	}
	T_vector ADD(T_vector A)
	{
		int ssds[10001];
		for(int i=1;i<=A.length;i++)
			ssds[i]=A.element[i]+element[i];
		T_vector C(A.length,ssds);
		return C;
	}
	T_vector REDUCE(T_vector A)
	{
		int ssds[10001];
		for(int i=1;i<=A.length;i++)
			ssds[i]=element[i]-A.element[i];
		T_vector C(A.length,ssds);
		return C;
	}
	double MOD(T_vector A)
	{
		double sum=0;
		for(int i=1;i<A.length;i++)
		{
			sum+=A.element[i]*A.element[i];
		}
		return sqrt(sum);
	}
	int length;
	int element[10001];
};
class T_Matrix
{
	public:
	T_Matrix(int a1,int a2,int mp[101][101])
	{
		length=a1;
		width=a2;
		for(int i=1;i<=length;i++)
		{
			for(int j=1;j<=width;j++)
			{
				element[i][j]=mp[i][j];
			}
		}
	}
	T_Matrix ADD(T_Matrix A)
	{
		int ssds[101][101];
		for(int i=1;i<=A.length;i++)
		{
			for(int j=1;j<=A.width;j++)
			{
				ssds[i][j]=A.element[i][j]+element[i][j];
			}
		}
		T_Matrix C(A.length,A.width,ssds);
		return C;
	}
	T_Matrix REDUCE(T_Matrix A)
	{
		int ssds[101][101];
		for(int i=1;i<=A.length;i++)
		{
			for(int j=1;j<=A.width;j++)
			{
				ssds[i][j]=element[i][j]-A.element[i][j];
			}
		}
		T_Matrix C(A.length,A.width,ssds);
		return C;
	}
	T_Matrix INTMULTIPLY(int x)
	{
		int ssds[101][101];
		for(int i=1;i<=length;i++)
		{
			for(int j=1;j<=width;j++)
			{
				ssds[i][j]=element[i][j]*x;
			}
		}
		T_Matrix A(length,width,ssds);
		return A;
	}
	int length,width,element[101][101];
};
int main()
{
	//TEST
	T_counter t1(10);
	cout<<t1.add(1)<<' '<<t1.reduce(1)<<' '<<t1.multiply(5)<<' '<<t1.divide(2)<<' '<<t1.leftbitmove(2)<<' '<<t1.rightbitmove(2)<<endl;
	int sds1[4]={0,1,2,3};
	int sds2[4]={0,2,2,2};
	T_vector t2(3,sds1);
	T_vector t3(3,sds2);
	T_vector t4=t2.ADD(t3);
	T_vector t5=t2.REDUCE(t3);
	for(int i=1;i<=t4.length;i++)
	{
		cout<<t4.element[i]<<' ';
	}
	cout<<endl;
	for(int i=1;i<=t5.length;i++)
	{
		cout<<t5.element[i]<<' ';
	}
	cout<<endl;
	int sds3[101][101];
	int sds4[101][101];
	for(int i=1;i<=3;i++)
	{
		for(int j=1;j<=3;j++)
		{
			sds3[i][j]=2;
			sds4[i][j]=1;
		}
	}
	T_Matrix t6(3,3,sds3);
	T_Matrix t7(3,3,sds4);
	T_Matrix t8=t6.ADD(t7);
	T_Matrix t9=t6.REDUCE(t7);
	for(int i=1;i<=t8.length;i++)
	{
		for(int j=1;j<=t8.width;j++)
		{
			cout<<t8.element[i][j]<<' ';
		}
		cout<<endl;
	}
	for(int i=1;i<=t8.length;i++)
	{
		for(int j=1;j<=t9.width;j++)
		{
			cout<<t9.element[i][j]<<' ';
		}
		cout<<endl;
	}
	return 0;
}

  有关struct重载运算符

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath> 
using namespace std;
struct Vector
{
	int a[100001];
	int Length;
	friend inline Vector operator + (Vector x,Vector y)
	{
		Vector ss;
		for(int i=1;i<=x.Length;i++)
		{
			ss.a[i]=x.a[i]+y.a[i];
		}
		ss.Length=x.Length;
		return ss; 
	}
	friend inline Vector operator - (Vector x,Vector y)
	{
		Vector ss;
		for(int i=1;i<=x.Length;i++)
		{
			ss.a[i]=x.a[i]-y.a[i];
		}
		ss.Length=x.Length;
		return ss;
	}
	friend inline int operator * (Vector x,Vector y)
	{
		int sum=0;
		for(int i=1;i<=x.Length;i++)
		{
			sum+=x.a[i]*y.a[i];
		}
		return sum;
	}
};
Vector S1,S2,S3;
char s;
int n;
int main()
{
	while(cin>>s)
	{
		cin>>n;
		S1.Length=n;
		S2.Length=n;
		for(int i=1;i<=n;i++)
		{
			cin>>S1.a[i];
		}
		for(int i=1;i<=n;i++)
		{
			cin>>S2.a[i];
		}
		if(s=='+')
		{
			S3=S1+S2;
			for(int i=1;i<n;i++)
			{
				cout<<S3.a[i]<<' ';
			}
			cout<<S3.a[n];
			cout<<endl;
		}
		if(s=='-')
		{
			S3=S1-S2;
			for(int i=1;i<n;i++)
			{
				cout<<S3.a[i]<<' ';
			}
			cout<<S3.a[n];
			cout<<endl;
		}
		if(s=='*')
			cout<<S1*S2<<endl;
	}
	return 0;
}

  结构体里面包函数

实际上还可以结构体套结构体

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
struct Worker
{
	int basic=2000;
	string name;
};
struct Teacher
{
	Worker x;
	int time,level;
	int pay[4]={0,50,30,20};
	void Print()
	{
		cout<<x.name<<' '<<x.basic+time*pay[level]<<endl;
	}
};
struct Manager
{
	Worker x;
	int paid;
	void Print()
	{
		cout<<x.name<<' '<<x.basic+paid<<endl;
	}
};
struct Laber
{
	Worker x;
	int day;
	void Print()
	{
		cout<<x.name<<' '<<x.basic+day*20<<endl;
	}
};
Teacher a;
Manager b;
Laber c;
int main()
{
	cin>>a.x.name>>a.level>>a.time;
	cin>>b.x.name>>b.paid;
	cin>>c.x.name>>c.day;
	a.Print();
	b.Print();
	c.Print();
	return 0;
}

  

------------恢复内容结束------------

标签:return,Struct,int,void,ACM,element,Vector,include,Class
来源: https://www.cnblogs.com/XLINYIN/p/16416739.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有