2022.4.24编程一小时打卡

发布时间 2023-04-24 20:50:32作者: 信2211-8李欣垚

一、问题描述:

利用模板编写一个寻找俩个数之间的最大值。

 

二、解题思路:

首先,利用模板template<class T>编写模板寻找最大值函数,最后在主函数中运行调试,验证模板的函数的可行性。

三、代码实现:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 template <class T>
 5 T GetMax(T a,T b)
 6 {
 7     T result;
 8     result=(a>b)?a:b;
 9     return result;
10 }
11 int main()
12 {
13     int i=5,j=6,k;
14     long l=10,m=5,n;
15     k=GetMax<int>(i,j);
16     n=GetMax<long>(l,m);
17     cout<<k<<endl;
18     cout<<n<<endl;
19     return 0;
20 }

一、问题描述:

编写一个模板实现一个数组的每个元素之间的加和,再编写一个模板实现俩个数组之间的加和,再编写一个函数实现字符串之间的相连,最后,在主函数中验证三个数组的加和。

二、解题思路:

首先,定义一个含一个类型参数的模板实现一个数组每个元素的相加和,再编写俩个类型参数的模板实现俩个数组之间的相加和,再编写一个函数利用strcpy()和strcat()俩个函数实现俩个字符串之间的相连,最后在主函数中定义俩个数组和俩个字符串去验证代码的运行调试。

三、代码实现:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 template<class T>
 5 T sum(T *array,int size=0)
 6 {
 7     T total=0;
 8     for(int i=0;i<size;i++)
 9     {
10         total+=array[i];
11     }
12     return total;
13 }
14 template<class T1,class T2>
15 T2 sum(T1 *array1,T2 *array2,int size=0)
16 {
17     T2 total=0;
18     for(int i=0;i<size;i++)
19         total+=array1[i]+array2[i];
20     return total;
21 }
22 char *sum(char *s1,char*s2)
23 {
24     char *str=new char[strlen(s1)+strlen(s2)];
25     strcpy(str,s1);
26     return strcat(str,s2);
27 }
28 int main()
29 {
30     int iArr[]={1,2,3,4,5};
31     double dArr[]={1.1,2.2,3.3,4.4,5.5};
32     char *p1="Hello";
33     char *p2="World";
34     int iTotal=sum(iArr,5);
35     double dTotal=sum(dArr,5);
36     double idTotal=sum(iArr,dArr,5);
37     p1=sum(p1,p2);
38     cout<<iTotal<<endl;
39     cout<<dTotal<<endl;
40     cout<<idTotal<<endl;
41     cout<<p1<<endl;
42     return 0;
43 }

一、问题描述:

编写一个类模板去实现去比较俩个数之间的大小。

二、解题思路:

首先,利用模板定义一个类,在类中定义俩个数据成员,再在类中定义一个比较俩个数据成员之间大小的函数,最后在主函数中定义一个类的对象去验证代码运行调试。

三、代码实现:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 template<class T>
 5 class mypair
 6 {
 7     T a,b;
 8 public:
 9     mypair(T first,T second)
10     {
11         a=first;
12         b=second;
13     }
14     T getmax();
15 };
16 template <class T>
17 T mypair<T>::getmax()
18 {
19     T retval;
20     retval=a>b?a:b;
21     return retval;
22 }
23 int main()
24 {
25     mypair<int> myobject(100,75);
26     cout<<myobject.getmax();
27     return 0;
28 }

一、问题描述:

编写一个类模板,利用类模板去定义一个数组,能够对数组进行输入和输出数组的元素。

二、解题思路:

首先,定义一个类模板,在类内定义一个数组,在定义俩个函数实现数组元素的输入输出,最后在主函数中定义一个类的对象去进行代码运行调试。

三、代码实现:

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4 template<class T,int N>
 5 class mysequence
 6 {
 7     T memblock[N];
 8 public:
 9     void setmember(int x,T value);
10     T getmember(int x);
11 };
12 template<class T,int N>
13 void mysequence<T,N>::setmember(int x,T value)
14 {
15     memblock[x]=value;
16 }
17 template<class T,int N>
18 T mysequence<T,N>::getmember(int x)
19 {
20     return memblock[x];
21 }
22 int main()
23 {
24     mysequence<int,5>myints;
25     mysequence<double,5>myfloats;
26     myints.setmember(0,100);
27     myfloats.setmember(3,3.1416);
28     cout<<myints.getmember(0)<<'\n';
29     cout<<myfloats.getmember(3)<<'\n';
30     return 0;
31 }