Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在数组中查找偶数问题(C+;+;)_C++ - Fatal编程技术网

C++ 在数组中查找偶数问题(C+;+;)

C++ 在数组中查找偶数问题(C+;+;),c++,C++,我的代码是提取一维数组中的奇数和偶数 #include <iostream> using namespace std; int main() { int a[6] = {1,6,3,8,5,10}; int odd[]={}; int even[]={}; for (int i=0; i < 6; i++) { cin >> a[i]; } for (int i=0; i < 6; i++)

我的代码是提取一维数组中的奇数和偶数

#include <iostream>
using namespace std;

int main() {
    int a[6] = {1,6,3,8,5,10};
    int odd[]={};
    int even[]={};

    for (int i=0; i < 6; i++) {
        cin >> a[i];
    }

    for (int i=0; i < 6; i++) {
        if (a[i] % 2 == 1) {
            odd[i] = a[i];
            cout << odd[i] << endl;
        }
    }

    cout << " " << endl;

    for (int i=0; i < 6; i++) {
        if (a[i] % 2 == 0) {
            even[i] = a[i];
            cout << even[i] << endl;
        }
    }

    return 0;
}
结果表明,它成功地提取了奇数,但同样的方法也适用于偶数。当偶数为4时,它会出现问题


有人能帮我找到原因吗?谢谢。

您可以使用
std::vectorodd
然后只调用
odd。当
elem
是odd时推回(elem)

您有一个未定义的行为,因此结果可能是任意、偶数随机、偶数格式化的硬盘驱动器

int-odd[]={}
int-odd[/*count of elements in{}*/]={/*nothing*/}
相同,因此它是
int-odd[0]

在访问数组末尾以外的元素时,未定义结果。 您可能需要考虑正确的奇偶数组大小,或者使用另一种自动调整大小的数据结构

首先,虽然没有引起问题,但可以使用数据初始化数组,然后覆盖它。代码

inta[6]={1,6,3,8,5,10};
可以替换为

inta[6];
此外,如评论中所述

int-odd[]={};
这是无效的。您应该分配一个与主缓冲区一样大的缓冲区(6个整数),或者使用一个向量(尽管我个人更喜欢c风格的数组,因为它们避免了堆分配和额外的复杂性)。使用全尺寸缓冲区技术,需要在数组中的值列表之后存储一个值,如
-1
(假设您只想输入正数),以通知输出代码停止读取,或将大小存储在某个位置。这是为了防止读取尚未设置的值


当输入中有4时,我不理解你的问题。除了数组之外,您的代码看起来很好。

您需要声明
奇数
偶数
的大小。它们默认为0个元素,因此您在边界之外赋值无效C++。数组必须具有非零大小,由编译时常数决定。您可以使用<代码> STD::vector < /代码>,然后用“代码> > PASSUBACK()/代码>动态添加数字。另一个选项是将<代码>奇数[]/COD> > <代码>奇数[ 6 ] < /代码> BTW,考虑使用<代码> SIZEOF(数组)或甚至<代码> COUNTOF(数组)< /代码>,
\u countof
或类似的for循环表达式。当您在四个不同的位置手动指定相同大小的数组时,在以后修改此代码时可能会遇到一些问题。
1
3
5

2
1
6