第6章 函数 第18题

题目:

编写一个函数模板,判断两个一维数组是否相同。模板参数是数组的类型。


代码:

#include <iostream>
using namespace std;

template <class T>
bool function(T a[], T b[], int number);

int main()
{
	cout << "判断两个一维数组是否相同" << endl << endl;
	
	int category;
	cout << "1.int" << endl << "2.double" << endl << "3.char" << endl << "请输入你要判断的数组的类型:";
	cin >> category;

	if (category == 1)
	{
		int number;
		cout << endl << "请输入这两个数组的元素个数:";
		cin >> number;

		int *a = new int[number];
		int *b = new int[number];

		cout << "请依次输入第一个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";
		
		for (int i = 0; i < number; ++i) cin >> a[i];

		cout << "请依次输入第二个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";

		for (int i = 0; i < number; ++i) cin >> b[i];



		bool judge = function(a, b, number);
		cout << endl << "这两个一维数组";
		if (judge == false) cout << "不";
		cout << "相同" << endl << endl;
	}

	if (category == 2)
	{
		int number;
		cout << endl << "请输入这两个数组的元素个数:";
		cin >> number;

		double *a = new double[number];
		double *b = new double[number];

		cout << "请依次输入第一个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";

		for (int i = 0; i < number; ++i) cin >> a[i];

		cout << "请依次输入第二个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";

		for (int i = 0; i < number; ++i) cin >> b[i];



		bool judge = function(a, b, number);
		cout << endl << "这两个一维数组";
		if (judge == false) cout << "不";
		cout << "相同" << endl << endl;
	}

	if (category == 3)
	{
		int number;
		cout << endl << "请输入这两个数组的元素个数:";
		cin >> number;

		char *a = new char[number];
		char *b = new char[number];

		cout << "请依次输入第一个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";

		for (int i = 0; i < number; ++i) cin >> a[i];

		cout << "请依次输入第二个数组的元素:(彼此之间用空格隔开,按回车键结束输入)";

		for (int i = 0; i < number; ++i) cin >> b[i];



		bool judge = function(a, b, number);
		cout << endl << "这两个一维数组";
		if (judge == false) cout << "不";
		cout << "相同" << endl << endl;
	}

	system("pause");
	return 0;
}

template <class T>
bool function(T a[], T b[], int number)
{
	for (int i = 0; i < number; ++i)
	{
		if (a[i] != b[i]) return false;
	}

	return true;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值