C++数组错误

C++ Array Error

本文关键字:错误 数组 C++      更新时间:2023-10-16

我创建了一个随机,它的大小是随机创建的。然后我为这个数组分配随机值。最后,我想将奇值和偶数值写入不同的数组。但是最后两个for循环显示 evenArray 和 oddArray 的错误值。

错误在哪里?请帮助我识别错误。

#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main()
{
    srand(time(0));
    int arraySize = rand() % 10 + 4;
    cout << "Array Size :  " << arraySize <<  endl;
    int myArray[arraySize];
    int oddIndex = 0;
    int evenIndex = 0;
    int oddArray[oddIndex];
    int evenArray[evenIndex];
    for( int m = 0 ; m < arraySize ; m++)
    {
        myArray[m] = rand() % 100 + 90 ;
        cout << m << "th value is : " << myArray[m] << endl;
    }
    for( int i = 0; i < arraySize ; i++)
    {
        if( myArray[i] % 2 == 0)
        {
            evenArray[evenIndex] = myArray[i];
            cout << "EVEN ARRAY " << evenIndex << "th element is " << evenArray[evenIndex] << endl;
            evenIndex++;
        }
        else
        {
            oddArray[oddIndex] = myArray[i];
            cout << "ODD ARRAY " << oddIndex << "th element is " << oddArray[oddIndex] << endl;
            oddIndex++;
        }
    }
    cout << "The total number of even array elements  : " << evenIndex  << endl;
    cout << "The total number of odd array elements  : " << oddIndex  << endl;
    cout <<  "/////////////////////////////////////////n";
    cout << "EVEN VALUES" << endl;
    for( int i = 0 ; i < evenIndex ; i++ )
    {
        cout << i << "th even value is: " << evenArray[i] << endl;
    }
    cout <<  "/////////////////////////////////////////n";
    cout << "ODD VALUES" << endl;
    for( int p = 0 ; p < oddIndex ; p++ )
    {
        cout << p << "th odd value is : " << oddArray[p] << endl;
    }
}
int oddIndex = 0;
int evenIndex = 0;
int oddArray[oddIndex];
int evenArray[evenIndex]; 

如您所见,您正在初始化oddArray,并以0大小evenArray。你可以做的是声明大小arraySize的两个数组,或者更好的是你可以使用向量

数组长度初始化错误

int oddArray[oddIndex];
int evenArray[evenIndex];

在此行中,您将创建两个长度为零的数组。进一步使用这些数组将导致未定义的行为。
如果您需要一个长度动态变化的数组,则应使用 std::vector .