• 模板与异常处理


    1、已知下列主函数:

    int main()

    {

        cout<<min(10,5,3)<<endl;

        cout<<min(10.2,5.6,3.8)<<endl;

        cout<<min('a','b','c')<<endl;

        return 0;

    }

    声明求3个数中最小者的函数模板,并写出调用此函数模板的完整程序。

    #include<iostream>

    using namespace std;

    template<class t>

    t min(t a,t b,t c)

    {

        t m;

        m=a;

        if(m>b)m=b;

        if(m>c)m=c;

        return m;

    }

    int main()

    {

        cout<<min(10,5,3)<<endl;

        cout<<min(10.2,5.6,3.8)<<endl;

        cout<<min('a','b','c')<<endl;

        return 0;

    }

     

    2、编写一个求任意类型数组中最大元素和最小元素的程序,要求将求最大元素和最小元素的函数设计成函数模板,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度类型。

     

    #include<iostream>

    using namespace std;

    template<class t>

    t max(t a[],int n)

    {

        t max=a[0];

        for(int i=0;i<n;i++)

        {

            if(a[i]>max)

                 max=a[i];}return max;

       

    }

    template<class t>

    t min(t a[],int n)

    {

        t min=a[0];

        for(int i=0;i<n;i++)

        {

            if(a[i]<min)

                 min=a[i];

        }return min;

    }

    int main()

    {

        int a[3]={3,5,9};

        double b[3]={1.2,5.6,6.9};

        char c[3]={'a','c','y'};

        cout<<"数组a的最大元素为:"<<max(a,3)<<endl;

        cout<<"数组a的最小元素为:"<<min(a,3)<<endl;

       cout<<"数组b的最大元素为:"<<max(b,3)<<endl;

        cout<<"数组b的最小元素为:"<<min(b,3)<<endl;

        cout<<"数组c的最大元素为:"<<max(c,3)<<endl;

        cout<<"数组c的最小元素为:"<<min(c,3)<<endl;

        return 0;

    }

    3、编写一个函数模板,使用冒泡排序将数组内容由小到大排列并打印出来,并写出调用此函数模板的完整程序,使得函数调用时,数组的类型可以是整型也可以是双精度型。

     

    #include<iostream>

    using namespace std;

    template <typename T>

    void sort(T *a,int n)

    {

    T t;

    int i,j;

    for(j=0;j<n;j++)

    for(i=0;i<n-j-1;i++)

    if(a[i]>a[i+1])

    {t=a[i];a[i]=a[i+1];a[i+1]=t;}

    cout<<"排序后为:"<<endl;

    for(i=0;i<n;i++)

    cout<<a[i]<<" ";

    cout<<endl;

    }

    int main()

    {

    int b[5]={2,5,3,7,6};

    double c[4]={1.2,3.3,6.1,3.5};

    sort(b,5);

    sort(c,4);

    return 0;

    }

    4、编写一个程序,使用类模板对数组元素进行排序、倒置、查找和求和。

    【提示】

    设计一个类模板

    template<class Type>

    class Array

    {

          ……

    };

    具有对数组元素进行排序、倒置、查找和求和功能,然后产生类型实参分别是int型和double型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。

    #include<iostream>

    using namespace std;

    template<class tape>

    class array

    {

        private:

            tape *a;

        public:

            array(tape *b)

            {

                 a=b;

                 cout<<"原数组为:"<<endl;

                 for(int i=0;i<5;i++)

                     cout<<a[i]<<' ';cout<<endl;

            }

            void paixu()

            {

              int i,j;tape temp;

              tape c[5];

                   for(i=0;i<5;i++)

                 {

                     c[i]=a[i];

                 }

                     cout<<"数组从小到大排序为:"<<endl;

                 for(j=0;j<5;j++)

                    for(i=0;i<5-j-1;i++)

                     {

                      if(c[i]>c[i+1])

                       {

                        temp=c[i];

                        c[i]=c[i+1];

                        c[i+1]=temp;

                       }

                     }

                 for(i=0;i<5;i++)

                          cout<<c[i]<<" ";cout<<endl;

            }

            void daozhi()

            {

                 tape c[5];

                 for(int i=0;i<5;i++)

                 {

                     c[i]=a[i];

                 }

                 cout<<"数组倒置后为:"<<endl;

                 for(i=4;i>=0;i--)

                     cout<<c[i]<<" ";cout<<endl;

            }

            void chazhao()

            {

                 tape h;

                 cout<<"请输入要查找的数字:"<<endl;

                 cin>>h;

                 for(int i=0;i<5;i++)

                 {

                     if(a[i]==h)

                         cout<<"所查找的数字为第"<<i+1<<"个数字"<<endl;

                 }

            }

            void qiuhe()

            {

                 tape t=0;

                 for(int i=0;i<5;i++)

                 {

                     t+=a[i];

                 }

                     cout<<"数组求和为:"<<t<<endl;

            }

    };

    int main()

    {

                 int s[5]={2,3,5,1,4};

                 array<int>array1(s);

                array1.paixu();

                 array1.daozhi();

                 array1.chazhao();

                 array1.qiuhe();

                 double d[5]={2.1,4.1,3.1,1.1,5.1};

                 array<double>array2(d);

                 array2.paixu();

                 array2.daozhi();

                 array2.chazhao();

                 array2.qiuhe();

                 return 0;

    }

     

     

    5、编写一个程序,求输入数的平方根。设置异常处理,对输入负数的情况给出提示。

     

    #include<iostream>

    #include<cmath>

    using namespace std;

    double f(double a)

    {

        if(a<0)

            throw 1;

        return sqrt(a);

    }

    int main()

    {

        int c;

        cout<<"请输入一个数:";

        cin>>c;

        try

        {

            cout<<c<<"的平方根是:"<<f(c)<<endl;

        }

        catch(int)

        {

            cout<<"输入的数是负数!"<<endl;

        }

        return 0;

    }

    朝闻道
  • 相关阅读:
    推荐系统实践
    python实现itemCF and userCF
    Mahout分步式程序开发 基于物品的协同过滤ItemCF
    用Maven构建单机Mahout项目
    Apache Mahout:适合所有人的可扩展机器学习框架
    mahout0.7 示例运行纪实
    win7基于mahout推荐之用户相似度计算
    cygwin
    Mahout初体验
    Android慎用layout嵌套, 尽量控制在5层下面java.lang.StackOverflowError
  • 原文地址:https://www.cnblogs.com/wander-clouds/p/8443782.html
Copyright © 2020-2023  润新知