y317558691 2016-11-10 02:41 采纳率: 60%
浏览 979
已采纳

一个计数程序报错,编译可以运行错误

新人刚刚学,在编译一个计数出现次数的程序时候,编译时没问题,运行的时候报错了。
不是很明白在哪个位置弄错了,麻烦解答一下
#include
#include
#include
using std::vector; using std::cin;
using std::cout; using std::endl;
using std::sort;
int main()
{
int n;
vector sj;
cout<<"Please input the num:"< while(cin>>n)
sj.push_back(n);
sort(sj.begin(),sj.end());
typedef vector::size_type vec;
vec i=sj.size();
for(int a=0,b=1;a!=i;++a)
{
if(sj[a]!=sj[a+1])
cout<<"the nums of"<<sj[a]<<"is"<<b<<endl;
else
++b;

}
return 0; 

}
图片说明

  • 写回答

1条回答 默认 最新

  • AlbertS 博客专家认证 2016-11-10 02:59
    关注

    你的索引越界了

    把原来的for循环改一下

        if (i == 1)
        {
            cout<<"the nums of"<<sj[0]<<"is"<<1<<endl;
        }
    
        int currnetnum = sj[0];
        int count = 1;
        for(int a=1;a!=i;++a)
        {
            if(sj[a]!=currnetnum)
            {
                cout<<"the nums of"<<currnetnum<<"is"<<count<<endl;
    
                if(a = i - 1)   // 最后一个
                {
                    cout<<"the nums of"<<sj[a]<<"is"<<1<<endl;
                }
                else
                {
                    currnetnum = sj[a + 1];
                    count = 1;
                }
            }
            else
            {
                ++count;
            }
    
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!