利用array对象去重

利用一个一维array对象解决问题。读入20个数,每个数在10~100之间(包括10和100)。在读入每个数时,确认这个数的有效性,并且若它和之前读入的数不一样,就把它存储到array对象中。读完所有的书之后,仅显示用户输入的不同的数值。假设“最糟糕的情况”是这20个数都不相同。请尽量用最小的array对象解决这个问题。

代码如下:

#include <iostream>
#include <array>
using namespace std;                 //思路:先将20个数全部存入array中,然后在输出时去除重复的数字

int main()
{
   const size_t arraySize = 20;//定义常量指定array对象的大小为20
   array < int,arraySize >M;
   array < int,arraySize >Z;
   array < int,arraySize >Q;
   int frequency1 = 0;//统计输入的数值在10~100之间的个数
   int frequency2 = 0;//统计在10~100之间且不重复的数值的个数
   std::cout << "请输入20个数字:" << std::endl;

    for( size_t i = 0;i < M.size(); ++i)//使用循环输入20个数字
    {
        std::cin >> M[i];//先将输入的20的元素全部存入

        if(M[i]>=10&&M[i]<=100)
        {
            Z[i]=M[i];//将满足范围的数字存入另一个array对象中
            ++frequency1;//统计输入的数值在10~100之间的个数
        }
    }

    for( size_t x = 0;x < frequency1; ++x)//利用双循环来去除重复的数值
    {
        for( size_t y = x + 1;y < frequency1; ++y)
        {
            if(Z[x] == Z[y])//判断是否有重复数字
            {
               ++x;    //当有重复数字时,则通过越过下标来越过重复的数字
               y = x;
            }
        }
        //std::cout << "用户输入的不同的数值如下:" << std::endl;
        std::cout << Z[x] << std::endl;//将满足条件的数值输出
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值