让NaN回来了,不知道为什么
Getting NaN returned, unsure of why
我仔细检查了这段代码,寻找为什么我得到NaN作为对三维矩阵的数字求和的输出。下面是矩阵的创建,每个值为3.6:
int dim = 100;
double ***my3DArray = new double**[dim];
for(int i = 0; i < dim; i++) {
my3DArray[i] = new double*[dim];
for(int j = 0; j < dim; j++) {
my3DArray[i][j] = new double[dim];
for (int k = 0; k < dim; k++) {
my3DArray[i][j][k] = 3.6;
}
}
}
这里是总结:
long double sumArray(double*** a3DArray, int m, int n, int l) {
long double sum;
int i, j, k;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
for (k = 0; k < l; k++) {
sum += a3DArray[i][j][k];
}
}
}
}
我应该在cout
命令中放入什么特殊的东西以使其不输出为nan吗?或者,有人看到一个明显的缺陷吗?谢谢你的建议
首先,在sumArray()中初始化变量sum:
long double sum = 0;
在main()
中将dism
变为dim
:
for(int i = 0; i < dim; i++)
你必须从main()
中调用函数:
sumArray(my3DArray,5,5,5); // random values
然后,为了输出sum,执行:
cout << sum;
在第一个for循环之后,最后确保delete
您的数组,以释放内存
你得到NaN是因为你的sumArray函数没有返回任何值。
更多信息
我用visual c++ .net构建了这个,
- sumArray不返回任何值
- 你的'dsim'变量应该写成'dim'
<
固定代码/strong>
#include "stdafx.h"
using namespace System;
long double sumArray(double*** a3DArray, int m, int n, int l) {
long double sum;
int i, j, k;
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
for (k = 0; k < l; k++) {
sum += a3DArray[i][j][k];
}
}
}
return sum;
}
int main(array<System::String ^> ^args)
{
int dim = 100;
double ***my3DArray = new double**[dim];
for (int i = 0; i < dim; i++) {
my3DArray[i] = new double*[dim];
for (int j = 0; j < dim; j++) {
my3DArray[i][j] = new double[dim];
for (int k = 0; k < dim; k++) {
my3DArray[i][j][k] = 3.6;
}
}
}
Double d = sumArray(my3DArray, 100, 100, 100);
Console::WriteLine(d.ToString());
return 0;
}
相关文章:
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 我不知道为什么这段代码会让核心被转储?
- 反转字符串.不知道为什么这个逻辑是错误的.C++
- 没有函数模板的实例与我不知道为什么的参数列表匹配
- if-else 语句仅按特定顺序工作,我不知道为什么
- DirectX 11 引擎在第三次代码改进后没有突然运行,我不知道为什么
- 函数抛出seg错误,我不知道为什么
- 我不知道为什么复制构造函数的调用在 c++ 中不稳定
- 随着时间的推移,我的程序越来越慢,我不知道为什么.内存泄漏
- 分段故障(核心转储)-不知道为什么
- "错误:在'.标记'之前出现预期的主表达式,我不知道为什么
- 我正在制作c ++代码,但发生错误我不知道为什么
- std::cout << glGetString(GL_RENDER) << std::endl;抛出错误但不GL_Renderer或GL_Verision,我不知道为什么?
- 不知道为什么它不会停止循环
- 我的Arduino串行命令行不起作用,我不知道为什么
- 我正在编写一个拆分为 3 的合并排序,我不知道为什么它不起作用
- C++单例模式代码无法运行,不知道为什么?
- 我不知道为什么我的矢量无法推回
- 罗马数字输出C++总是"-858993460",不知道为什么?
- 合成错误不知道为什么会发生这种情况,请检查一下并告诉我这是我的编码还是视觉工作室