如何填充数组而不覆盖



我试图创建和填充一个新的数组从一个已经给定的数组。但是当我尝试用for loop和array= I来做这个时;数组只给出原始数组的最后一个值。

void evensOdds(){

int xs[18]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,555,558,333};
int Odd = 0;
int Even = 0;
// Counts the odds and evens in the array.
for (int i=0; i<18; i++){
if (xs[i]%2 == 0) {
Even++;
}
else {
Odd++;
}
}
// Defines the odd - even arrays.
const int NEven = Even;
const int NOdd = Odd;
int odd_xs[NOdd];
int even_xs[NEven];
// Fills the arrays with proper values.
for (int i=0; i<18; i++){
if (xs[i]%2 == 0) {
even_xs[NEven]= xs[i];
}
else {
odd_xs[NOdd]= xs[i];
}
}  
std::cout<<"Number of odds in the array:  "<<Odd<<std::endl;
std::cout<<"Number of evens in the array:  "<<Even<<std::endl;
std::cout<<"Odd numbers are= "<<odd_xs[NOdd]<<std::endl;
std::cout<<"Even numbers are= "<<even_xs[NEven]<<std::endl;
return;
}

所以这段代码的cout行输出是

odd_xs array = 55
even_xs array = 66

而它应该是

odd_xs array = 1, 11, 15, 55
even_xs array = 2, 4, 6, 8, 10, 66

我该怎么做?提前感谢!

你的代码是C而不是c++。

这是c++中惯用的方法,使用适当的标准c++类。

#include <iostream>
#include <vector>
void evensOdds() {
int xs[] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,555,558,333 };
std::vector<int> odd_xs;
std::vector<int> even_xs;
for (auto value : xs) {
if (value % 2 == 0) {
even_xs.push_back(value);
}
else {
odd_xs.push_back(value);
}
}
std::cout << "Number of odds in the array:  " << odd_xs.size() << std::endl;
std::cout << "Number of evens in the array:  " << even_xs.size() << std::endl;
std::cout << "Odd numbers are = "; 
for (auto value : odd_xs)
std::cout << value << " ";
std::cout << "n";
std::cout << "Even numbers are = ";
for (auto value : even_xs)
std::cout << value << " ";
std::cout << "n";
return;
}
int main()
{
evensOdds();
}

例如,您总是写入even_xs[NEven],因此该值将始终被覆盖,并且最后只有一个值将存储在even_xs[NEven]

通常没有提供足够的代码,例如,您需要一个循环来打印数组的每个元素,但是我们无法看到您是使用循环还是仅使用单个cout语句来打印

假设您想将xs中的偶数值放入even_xs数组中,将奇数值放入odd_xs数组中,您可能想要这样做:

NEven = 0;
NOdd = 0;
for (int i = 0; i < 18; i++) {
if (xs[i] % 2 == 0) {
even_xs[NEven++] = xs[i];    
}
else {
odd_xs[NOdd++] = xs[i];
}
}

顺便说一句:这段代码实际上是C代码,在c++中你会做不同的事情。

最新更新