3

要素がテストされるベクトルと、true または false として入力する bool 変数の 2 つの引数を持つ関数があります。true を入力すると、桁の合計が偶数であるすべての要素を分離して新しいベクトルに (同じ順序で) 配置し、そのベクトルを返すことになっています。false の場合、反対の奇数です。そして、ここで既に使用したほとんどのものしか使用できません。

これがその外観です。

std::vector<int> IzdvojiElemente(std::vector<int> v, bool flag){
  std::vector<int> n;
  for(int i(0); i<v.size();i++){
     int suma(0);
     int temp(v[i]);
     if(temp<0) temp*=-1;
     while(temp>0){
        suma+=temp%10;
        temp/=10;
     }

     if(flag && suma%2==0) n.push_back(v[i]);
     if(!flag && suma%2!=0) n.push_back(v[i]);

  }
  return n;
}

そして、これは機能しない主な機能の 1 つです。

std::vector<int> v1 {1,std::numeric_limits<int>::min(),2, std::numeric_limits<int>::max(),5};
std::vector<int> v2;

v2 = IzdvojiElemente(v1, false);

for(int i=0; i < v2.size(); i++)
   std::cout << v2[i] << " ";

これは私が(出力として)得ることになっていたものです:

1 -2147483648 5

これは私が得たものです:

1 5

何らかの理由で、数値制限を無視するか、そうではなく、間違ったベクトルで並べ替えます。理由はわかりません。それ以外の場合は、正常に機能します。オーバーフローかもしれませんが、どこにあるのかわかりません。

4

1 に答える 1