栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++小作业-对数组类的操作

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++小作业-对数组类的操作

1、建立一个数组类ARR删除数组中的重复元素

【问题描述】有16个数:{1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10},已按由小到大的顺序排好,存于数组a中,试建立一个类ARR,完成将其中相同的数删得只剩一个。经删除后,a数组中的内容 为{1,2,3,4,5,6,7,8,9,10},具体要求如下:

    (1) 私有数据成员

    int n: 数组实际元素个数。

    int a[100]:存放原始数组及结果数组。

    (2) 公有成员函数

    ARR(int x[ ], int size):构造函数,用size初始化n,用x初始化a数组。

    void delsame():完成数组a中相同元素的删除工作。

    void show(): 将结果数组以每行10个数的形式输出到屏幕上。

    (3) 在主程序中定义数组int b[16],初值如上。定义一个类ARR的对象v,用b及数组元素的个数初始化该对象,然后按上述要求完成对该类的测试。

【输入形式】无
【输出形式】输出数组对象删除重复元素前和删除重复元素后的数据。

【样例输入】无
【样例输出】

删除前: 1 2 2 3 4 4 5 6 6 7
8 8 8 9 10 10

删除后: 1 2 3 4 5 6 7 8 9 10

#include
using namespace std;
#include
class ARR
{
    private:
        int n;
        int a[100];
    public:
        ARR(int x[], int size)
        {
            n=size;
            for(int i=0;i
                a[i]=x[i];
            }

        }
        void delsame()
         {
             for(int i=0;i
                 for(int j=i+1;j
                     if(a[i]==a[j])
                     {
                         for(int k=j;k
                             a[k]=a[k+1];//所有数字前移一位,就删除了当前重复元素
                         }
                         --n;//删除元素后数组大小减1
                         --j;//因为有j++,要减一下,否则下次比较的是移动之后的下一位
                     }
                 }
             }
         }
         void show()
         {
             for(int i=0;i
                 cout<
        int  b[]={1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10};  //先定义数组,  用此数组初始化类的对象中的数组成员
        int  n=sizeof(b)/sizeof(int);  //计算b数组的元素长度
        ARR  v(b,n);  //定义类的对象并用数组b和数据n初始化对象的成员
        cout<<"删除前:";
        v.show();    //输出对象的数组成员中的数据(还未做删除操作,  输出的是初始化后的数据)
        cout< 
2、定义一个类ARRAY实现对一维整型数组的排序 

【问题描述】试定义一个类ARRAY,实现对一维整型数组的排序。排序的规则如下:将一维数组中各元素按其各位的数字之和从小到大排序。具体要求如下:

(1)私有数据成员:

    int a[100]; 待排序的数组;

    int n; 数组中元素的个数;

(2)公有成员函数

   ARRAY(int t[], int m); 构造函数,利用参数t初始化成员a,参数m为数组t中元素的个数,用参数m初始化成员n;

    int sum(int x); 求整数x的各位数字之和,并返回该值,此函数供成员函数fun()调用;

   void fun(); 按要求对数组a的元素排序;

    void print(); 输出数组a的所有元素。

(3)在主函数中对该类进行测试。

【输入形式】无
【输出形式】排序前后的数组对象中的数据。
【样例输入】无
【样例输出】

排序前:297 735 624 158 312 900

排序后:312 900 624 158 735 297

#include
using namespace std;
#include
class ARRAY
{
    private:
        int n;
        int a[100];
    public:
        ARRAY(int t[], int m)
        {
            n=m;
            for(int i=0;i
                a[i]=t[i];
            }
        }
        int sum(int x)
        {
            int sum=0;
            while(x)
            {
            //计算整数的各位数字之和
                sum+=x%10;
                x/=10;
            }
            return sum;
        }
        void fun()
        {
        //选择排序
            for(int i=0;i
                for(int j=i+1;j
                    if(sum(a[i])>sum(a[j]))
                    {
                        int temp=a[i];
                        a[i]=a[j];
                        a[j]=temp;
                    }
                }
            }
        }
        void print()
        {
            for(int i=0;i
                cout<       int a[]={297,735,624,158,312,900};
        ARRAY arr(a,sizeof(a)/sizeof(int));
        cout<<"排序前:";  
        arr.print();
        arr.fun();
        cout<<"排序后:";
        arr.print  ();
        return  0;
}
3、建立一个数组类ARR求最大值及其下标

【问题描述】建立一个数组类ARR,求一个整型数组所有元素中的最大值及该最大值在数组中的序号(从1开始),具体要求如下:

(1)私有数据成员:

    int n : 数组实际元素个数

    int a[100] :  存放数组元素

    int  max,  maxindex :  存放整型数组元素中的最大值及最大值的序号

(2)公有成员函数

    ARR(int x[ ], int size): 构造函数,用参数size初始化n,用x数组初始化a数组。

   void  FindMax( ): 求整型数组元素中的最大值及最大值的序号。

    void  Show( ):  将数组元素以每行5个数的形式输出到屏幕上,同时输出数组中元素的最大值及最大值的序号。

(3)在主函数中完成对该类的测试,定义一个整型数组b[ ]={3,4,6,8,10,34,2}, 定义一个ARR类的对象arr,用b数组及其元素个数初始化该对象,求其最大值及最大值的序号并输出程序的运行结果。

【输入形式】无

【输出形式】数组对象中的元素最大值及最大值的序号。

【样例输入】无
【样例输出】

3 4 6 8 10

34 2

max=34 maxindex=6

#include
using namespace std;
#include
class ARR
{
    private:
        int n;
        int a[100];
        int max,maxindex;
    public:
        ARR(int x[ ], int size)
        {
            n=size;
            for(int i=0;i
                a[i]=x[i];
            }
        }
        void FindMax()
        {
            max=a[0];
            maxindex=0;
            for(int i=1;i
                if(a[i]>max)
                {
                    max=a[i];
                    maxindex=i+1;
                }
            }
        }
        void Show()
        {
            for(int i=0;i
                cout<
                    cout<
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832725.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号