繁体   English   中英

用C ++打印一个简单的数组

[英]Printing a simple array in C++

当我使用C ++时,我是一个新手,但是基本上我正在尝试使用以下代码打印数组:

#include <iostream>
#include <string>
#include <vector>
#include <ctime>
#include <numeric>
#include <math.h>
#include <iterator>
#include "rect_plate.h"
#include "numeric_constants.h"

using namespace std;
using std::vector;

// function prototypes
vector<double> generateRange(double a, double b, double c);

double lengthX;
double lengthY;
double resX;
double resY;

double Nx = lengthX / resX;
double Ny = lengthY / resY;

double deltaX = lengthX / Nx;
double deltaY = lengthY / Ny;


// function to calculate array
vector<double> generateRange(double a, double b, double c) {
    vector<double> array;
    while (a <= c) {
        array.push_back(a);
        a += b;         // could recode to better handle rounding errors
    }
    return array;
}

vector<double> xSpace = generateRange(deltaX / 2, deltaX, lengthX);
vector<double> ySpace = generateRange(deltaY / 2, deltaY, lengthY);

int main()
{
    // print array
    for (int i = 0; i < Nx - 1; i++)
    {
        cout << "Test" << xSpace[i] << endl;
    }
    system("pause");
    return 0;
}

但是当我运行可执行文件时,控制台中没有任何输出。 我得到的只是“按一个键继续”,然后退出控制台。

我正在将一些过程MATLAB转换为OO-C ++。 我有一个带有对象的类设置,但是现在删除了那些对象以检查我的变量是否正确初始化。 我知道在C#中,有一种方法可以遍历代码(F10-我正在使用VS2017),当您将鼠标悬停在给定变量上时,它会向您显示值,但没有发现与C ++类似的东西,所以我现在只是打印(或至少尝试打印)所有内容。

好,让我们逐步进行

double lengthX;
double lengthY;
double resX;
double resY;

这些变量的值是多少? C ++规则表示它们全为0.0 (因为它们是未初始化的globals ,并且globals首先要零初始化)。

double Nx = lengthX / resX;
double Ny = lengthY / resY;

这些变量的价值是什么? 从上一节开始,它是0.0/0.0 根据几乎普遍使用的IEEE标准(一个特殊的数字,称为NaN ,NaN代表“非数字”。

double deltaX = lengthX / Nx;
double deltaY = lengthY / Ny;

这些变量的价值是什么? lengthX为零,但NxNaN 同样,根据IEEE标准,在另一个NaNNaN resul进行的任何操作,因此这些变量也是NaN

因此,您最后使用NaN调用了generateRange作为第一个参数。 generateRange内部,此表达式的值是什么? 记住aNaN

while (a <= c) {

IEEE标准说,将NaN与任何事物进行比较始终是false 因此,您的while循环永远不会输入,并且什么也不会添加到您的数组中。

显然,代码的一般问题是您从未给初始变量提供任何值。 您应该为这些变量分配一些数字。 然后, 设置完所有变量之后(可能是来自用户的输入),从main函数内部调用generateRange是传统的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM