0
{
    // 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
}

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

4

2 回答 2

4

问题是您用于大小的变量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];
于 2013-11-02T02:38:25.417 回答
1

当您说new Foo[NumItems],该数组将永远只有NumItems项目,它不会自行增长。如果您想稍后调整它的大小,您需要分配一个正确大小的新数组并复制成员。有时您可以使用realloc.

你的问题有两个方面:

  • 您正在初始化大小为 0 的数组,这是没有意义的。一旦你知道你需要多少项目,用那个数字分配数组。
  • 您假设数组将在您添加项目时自行增长。

对于第二种情况,你真的应该只使用一个std::vector会自动增长并为你省去麻烦的东西。

std::vector<double> firstArray(initialSize);
firstArray.push_back(firstItem);
firstArray.push_back(secondItem);
//...

在您当前的情况下,您可以推迟数组的创建,直到您知道需要在其中存储的项目总数。

于 2013-11-02T02:40:48.717 回答