c++ - 我的动态数组有问题

标签 c++ arrays

{
    // FIRST ARRAY
    int NumberOfXValues;
    double* FirstArray;
    NumberOfXValues = 0;
    FirstArray = new double[NumberOfXValues];
    // END FIRST ARRAY

    // SECOND ARRAY
    int NumberOfProbabilities;
    double* SecondArray;
    NumberOfProbabilities = 0;
    SecondArray = new double[NumberOfProbabilities];
    // END SECOND ARRAY

    // THIRD ARRAY
    int Product;
    double* ThirdArray;
    Product = 0;
    ThirdArray = new double[Product];
    // END THIRD ARRAY

    // OBTAINING THE NUMBER OF X VALUES
    cout << "Please input the number of \"x\" values we will be using: ";
    cin >> NumberOfXValues;
    // END OF OBTAINING THE NUMBER OF X VALUES

    // OBTAINING THE VALUES IN THE FIRST ARRAY
    int x;
    cout << "Please input the \"x\" values in order from least to greatest: " << endl;
    cout << endl;
    for (int x = 0; x < NumberOfXValues; x++)
    {
        cout << "Enter number: ";
        cin >> FirstArray[x]; 
    }
    cout << endl;
    // END OF OBTAINING THE VALUES IN THE FIRST ARRAY

    // OBTAINING THE VALUES IN THE SECOND ARRAY
    cout << "Please input the probabilities corresponding to their \"x\" values: " << endl;
    cout << endl;
    for (int x = 0; x < NumberOfXValues; x++)
    {
        cout << "Enter probability in decimal form: ";
        cin >> SecondArray[x];
    }
    cout << endl;
    // END OF OBTAINING THE VALUES IN THE SECOND ARRAY

    // MULTIPLYING THE FIRST TWO ARRAYS TO OBTAIN THE THIRD
    for (int x = 0; x < NumberOfXValues; x++)
    {
        ThirdArray[x] = FirstArray[x] * SecondArray[x];
    }
    // END OF MULTIPLYING THE FIRST TWO ARRAYS TO OBTAIN THE THIRD

    //TEST
    for (int x = 0; x < NumberOfXValues; x++)
    {
        cout << ThirdArray[x];
        cout << endl;
    }
    //TEST
}

这是我第一次求助于其中一个网站,但我已经工作了将近一个多小时来解决这个问题。它运行完全平稳,直到它显示第三个数组中的第三个值。它总是给我一个奇怪的数字。

最佳答案

问题是当您创建数组时,您用于大小的变量被设置为 0:

int NumberOfXValues;
double* FirstArray;
NumberOfXValues = 0;
FirstArray = new double[NumberOfXValues];

此处 FirstArray0,因此它将创建一个包含 0 元素的数组。

你必须在获取元素数量后创建数组。

cout << "Please input the number of \"x\" values we will be using: ";
cin >> NumberOfXValues;
FirstArray = new double[NumberOfXValues];

关于c++ - 我的动态数组有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19738380/

相关文章:

c++ - posix 中的健壮 rwlock

php - 如何使用 php 从表中选择值使用一些键

javascript - Array.filter 不准确返回对象的属性?

c++ - 如果设置了另一个,则清除位

c++ - 如何使用 WGS84 Datum 将 C 中的 UTM 坐标转换为纬度/经度?

c# - 在Javascript中将数组字符串解析为数组对象

javascript - 同一变量的返回值和日志不匹配

c - 释放 C 中的 2D 数组。 "double free or corruption"和 "invalid next size"

c++ - 如何 "track"缺少 ctor 初始化列表参数?

c++ - 如何使用模板编程创建多类型数组