计算数组中元素重复的次数

新手上路,请多包涵

我正在尝试编写的程序允许我输入 10 个数字,它应该告诉我数字 X 重复 X 次,依此类推。

我一直在尝试这个,但问题是我得到的结果如下:

例如…{1,1,1,1,4,6,4,7,4}

数字 1 重复 4 次

数字 1 重复 3 次

数字 1 重复 2 次

数字 1 重复 1 次

数字 4 重复 3 次

数字 6 重复 1 次

数字 4 重复 2 次

数字 7 重复 1 次

数字 4 重复 1 次

问题是它检查下一个数字与以下数字而不跳过它,或者不知道它之前已经写过它

#include <iostream>
#include <string>
using namespace std;
int main() {
    int x[10];
    for (int i=0;i<10;i++) {
        cin>>x[i];
    }

    for (int i=0;i<9;i++) {
        int count=1;
        for (int j=i+1;j<10;j++) {
            if (x[i]==x[j]) count++;
        }
        cout<<"The number "<<x[i]<<" is repeated "<<count<<" times"<<"\n";
    }
}

原文由 Mahmoud Nabil 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
1 个回答
    #include <iostream>
    #include<map>
    using namespace std;
    int main()
    {
           int arr[]={1,1,1,1,4,6,4,7,4};
           int count=1;
           map<int,int> mymap;
           try
           {
               if(sizeof(arr)/sizeof(arr[0])<=1)
               {
                  throw 1;
               }
           }
           catch(int x)
           {
               cout<<"array size is not be 1";
               return 0;
           }

           for(int i=0;i<(sizeof(arr)/sizeof(arr[0]));i++)
           {
                   for(int j=i;j<(sizeof(arr)/sizeof(arr[0]));j++)
                   {
                       if(arr[i]==arr[j+1])
                       {
                           count++;
                       }
                   }

                   if(mymap.find(arr[i])!=mymap.end())
                   {
                       auto it = mymap.find(arr[i]);
                       if((it)->second<=count)
                        (it)->second=count;
                       count=1;
                   }
                   else if(count)
                   {
                      mymap.insert(pair<int,int>(arr[i],count));
                      count=1;
                   }
           }

           for(auto it=mymap.begin();it!=mymap.end();it++)
           {
               cout<<it->first<<"->"<<it->second<<endl;
           }

        return 0;
    }

预期输出:

 1->4
4->3
6->1
7->1

原文由 laddu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题