我的动态数组有问题
Trouble with my dynamic 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];
这里FirstArray
0
,因此它将创建一个0
元素数组。
您必须在获得元素数量后创建数组。
cout << "Please input the number of "x" values we will be using: ";
cin >> NumberOfXValues;
FirstArray = new double[NumberOfXValues];
当你说new Foo[NumItems]
时,该数组将只有NumItems
个项目,它不会自行增长。如果以后要调整其大小,则需要分配一个大小合适的新数组并复制成员。有时,您可以使用realloc
延长当前的分配。
您的问题是双重的:
- 您正在初始化大小为 0 的数组,这毫无意义。知道需要多少项后,使用该数字分配数组。 您
- 假设数组将在您添加项目时自行增长。
对于第二种情况,您实际上应该只使用会自动增长并为您省去麻烦的std::vector
。
std::vector<double> firstArray(initialSize);
firstArray.push_back(firstItem);
firstArray.push_back(secondItem);
//...
在当前的情况下,您可以推迟数组的创建,直到知道需要在其中存储的项目总数。
相关文章:
- 将 std::unique_ptr 重置为指向数组的指针有什么问题?
- 将任意对象附加到数组有什么问题
- 我们在 c++17 中有自动数组吗?
- 我的C++程序有问题.涉及动态调整整数数组的大小
- C++有问题的函数,数组到列表
- 我的算法在 1D 数组中渲染矩形有什么问题
- 问题是关于C 的数组,以便在编程主题中有更多的了解
- 我的代码中的数组有问题.任何建议
- 我的代码正在制作 2D 数组元素的重复副本.代码中有什么问题?
- 在C++中使用有界数组的正确方法是什么?
- 我的动态数组有问题
- 如何将双精度数组从 VB6 传递到 VC++.这段代码有什么问题
- 我的字节数组到十六进制字符串转换器有什么问题,或者为什么它在写入文件时会在某个位置后剪切符号?
- 我在合并排序中传递此数组的方式有什么问题
- 声明类类型的数组(Borland C++有问题)
- 我的指向结构的指针数组有什么问题?
- 在 c++ 中,这段代码涉及对象数组的排序有什么问题?
- 这个字符数组代码有什么问题?
- 我的数组代码有什么问题
- C/ c++中有复制数组的函数吗?