访问向量容器

时间:2016-01-27 17:56:07

标签: c++ vector

在下面提到的程序中,我将整数转换为向量,然后通过向量的每个元素检查数字的可分性。但是,在访问向量元素以按编号检查元素的可分性时,会发生运行时错误。

#include <iostream>
#include <algorithm>
#include<vector>
using namespace std;

int main(){
int testcase;
cin>>testcase;  //number of testcases inputted
while(testcase--)
{
int number,i=0,count=0;
cin >>number;                //number is inputted
int p=number;
vector<int> arr(100);      
while(number){            //converting integer to array
    arr[i]=number%10;

    number=number/10;
    cout<<arr[i];
    if(p%arr[i]==0) //checking whether each element of array is divisible by number //this gives runtime error
    count++;
    i++;
}

  cout<<endl<<count<<endl; //printing the count of elemnts of array  divisible by number
  }
 return 0;
 }

我已经注释掉了给出运行时错误的if条件(没有if条件,程序运行正常)。有人可以告诉我如何纠正它? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

在这种情况下

if(p%arr[i]==0)

arr[i]可以等于0

因此,如果数字包含0,则程序将失败。

答案 1 :(得分:0)

如果number % 10 == 0怎么办? 这意味着arr[i] = 0因此表达式p%arr[i]将导致未定义的行为,因为mod 0是非法的。您的while循环应该类似于while(number % 10)