zoukankan      html  css  js  c++  java
  • 数组模板实现(新手遇到的格式问题)

    不废话,贴代码

    主函数随便写的,大佬轻喷,若有高见评论区回复。

    #include <iostream>
    using namespace std;
    /*
    若在外表达则需要
    template<typename T>//表达错误,数组应作为类中的成员
    Array<T>::Array(int n){} 1.表明作用域 2.记得带头 3.数组记得用指针来new
    */
    template<typename T>//此处的class也可变更为typename;
    class Array
    {
    public:
    	//之前是此处的n出现了问题
    	Array(int n)//类定义,申请相应的空间
    	{
    		if (n > 1)
    			size = n;
    		else
    			size = 1;
    		element = new T[size];
    	}
    	~Array()//删除空间
    	{
    		delete[] element;
    	}
    	void initial()//数组初始化
    	{
    		for (int i = 0; i < size; i++)
    		{
    			element[i] = 0;
    		}
    	}
    
    	void input()//输入数据
    	{
    		for (int i = 0; i < size; i++)
    		{
    			cin >> element[i];
    		}
    	}
    	
    	T add()//进行自身累加,用ans输出
    	{
    		ans = 0;
    		for (int i = 0; i < size; i++)
    		{
    			ans += element[i];
    		}
    		return ans;
    	}
    	double average()//计算平均值,记得用double
    	{
    		double n1 = size;//先转换为double进行计算!!!
    		return add() / n1;//利用前面计算的结果顺便一除
    	}
    	void show()
    	{
    		for (int i = 0; i < size; i++)
    		{
    			cout << element[i] << " ";
    		}
    		cout << endl;
    	}
    protected:
    	int size;
    	T * element;
    	T ans = 0;
    };
    
    int main()
    {
    	int n, jud = 1;
    	cout << "请问您想要生成什么类型的数组1.int 2.double 3.long long(_int64)" << endl;
    	cin >> jud;
    	cout << "请输入数组大小" << endl;
    	cin >> n;
    	switch (jud)
    	{
    	case 1:
    	{
    		Array<int> a1(n);
    		a1.initial();
    		cout << "请输入数组内容" << endl;
    		a1.input();
    		cout << "数组的和为:" << a1.add() << endl;
    		cout << "数组的平均数为 " << a1.average() << endl;
    		cout << "显示数组 " << endl;
    		a1.show();
    		break;
    	}
    	case 2:
    	{
    		Array<double> a1(n);
    		a1.initial();
    		cout << "请输入数组内容" << endl;
    		a1.input();
    		cout << "数组的和为:" << a1.add() << endl;
    		cout << "数组的平均数为 " << a1.average() << endl;
    		cout << "显示数组 " << endl;
    		a1.show();
    		break;
    	}
    	case 3:
    	{
    		Array<long long> a1(n);
    		a1.initial();
    		cout << "请输入数组内容" << endl;
    		a1.input();
    		cout << "数组的和为:" << a1.add() << endl;
    		cout << "数组的平均数为 " << a1.average() << endl;
    		cout << "显示数组 " << endl;
    		a1.show();
    		break;
    	}
    	default:
    		cout << "请输入正确的选项" << endl;
    		break;
    	}
        return 0;
    }
    
  • 相关阅读:
    BSS Audio® Introduces Full-Bandwidth Acoustic Echo Cancellation Algorithm for Soundweb London Conferencing Processors
    转:虚拟运营商颠覆八大行业 170号码将成主流?
    移动通信调制技术的进展 转
    转:瑞利信道,莱斯信道和高斯信道模型
    转:Android开发之旅:环境搭建及HelloWorld
    web端视频直播网站的弊端和优势
    频域分辨率与DFT,DCT,MDCT理解
    转:超声波支付
    谈音频算法技术研发团队建立
    转:HTML5标准与性能之四:asm.js
  • 原文地址:https://www.cnblogs.com/gidear/p/11773651.html
Copyright © 2011-2022 走看看