私は2つの引数を持つ関数、要素がテストされているベクトル、真または偽として入力するブール変数を持っています。真であれば、桁数の和が偶数であるすべての要素を分離して新しいベクトルに(同じ順序で)置き、そのベクトルを返すことになっています。 falseの場合、それは反対の奇数です。そして、私はここですでに使っているものだけを使うことができます。なぜ正しく動作しないのですかNumeric_limits
これは見た目です。
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;
}
そして、これはそれが動作しないために主要機能の一つである:
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
som数値制限を無視するか、間違ったベクトルでそれらをソートしません。そして私は理由を知らない。それ以外の場合は、必要に応じて動作します。そして多分それはオーバーフローですが、私はどこを見ることができません。
「表現可能」という単語(lではなくk)で間違いを犯しました。 –