无法打印存储在 C++ 格式的数组中的内容
Unable to print the content stored in an array in C++
我是C++编程新手,在显示数组内容时遇到一些麻烦。该脚本非常简单,旨在绘制一个函数 f(x(;基本上在我通过 for 循环创建数组 (x_vect( 之后。我想显示其中的内容而不在循环内进行(那将是作弊(。
// Grafico di una funzione
#include <iostream>
#include <stdio.h> // serve per poter utilizzare PRINTF e SCANF
#include <math.h>
using namespace std;
int main()
{
float x_in, x_fin; // estremi della funzione
float delta_x; // passo della funzione
int n; // numero di passi
// ciclo di controllo sugli estremi dell'intervallo
while (x_fin < x_in)
{
cout << endl;
printf("> Insert extreme values: ");
scanf("%f" "%f", &x_in, &x_fin); // NB: non va la virgola tra le %f
cout << endl;
printf("> number of intervals: ");
scanf("%d" , &n); // NB: %d se voglio avere un numero intero
if (x_fin < x_in)
{
cout << endl;
cout << "> Warnign: wrong extreme values (x_fin > x_in)" << endl;
}
}
delta_x = (x_fin - x_in)/n;
float x_vect[n];
float x = x_in;
x_vect[0]=x;
for (int i=1; i<n; i++)
{
x = x + delta_x;
x_vect[i] = x;
}
cout << x_vect << endl; // HERE'S THE PROBLEM !!!!!!!!!!!!!!!!!
// apertura del file per il salvataggio dei dati
FILE *file; // comando necessario per salvataggio di un file
file = fopen("salvataggio_dati.txt", "wt");
fclose(file);
cout << endl;
return 0;
}
但是脚本没有获取x_vect的内容,而是返回一系列奇怪的字母和数字,例如:0x7fff4f6e4ec0
知道吗?提前谢谢。
由于 x_vect
是一个数组,您需要通过执行类似操作来循环以获取其值
for(int i=0;i<n;i++)
cout << x_vect[i] << endl;
正如几条评论中提到的,您的代码中还有其他几个问题
idone 示例显示了这两个实际操作。
打印循环:
x_vect
是一个数组,并作为指针float *
传递给cout
。
该行:
cout << x_vect << endl;
正在打印指向标准输出的指针地址。
要从数组中打印值,您需要使用指针语法取消引用指针:
*(x_vect + x)
或使用数组语法:
x_vect[x]
大多数时候,第二个是可取的,但两者都编译为完全相同的操作。
这将打印一个值(存储在索引 x
的值(。 为了打印所有这些,我们需要一个循环:
for (int i = 0; i < n; i++)
{
cout << x_vect[i] << endl;
}
然后依次打印每个值。
附加:
在while
循环中,在初始化值之前对其进行测试。由于它们可能具有任何价值,因此这可能不会一直有效。例如,许多调试器导致初始化的变量初始化为0
在这种情况下,您的循环将永远不会触发。
这里有一些修改来解决这个问题:
do
{
cout << "n> Insert extreme values: ");
cin >> x_in >> x_fin;
cout << "n> number of intervals: ");
cin >> n;
if (x_fin < x_in)
{
cout "n> Warning: wrong extreme values (x_fin > x_in)" << endl;
}
} while (x_fin < x_in);
do {} while();
循环将始终穿过循环主体一次。 这允许正文设置x_fin
和x_in
,以便在首次读取时具有有效的值。
我还使用cin
和cout
进行了标准化,因为您不应该真正混合使用 I/O。 为了简单起见,我没有对输入值进行任何检查,您应该这样做。
IDONE 示例显示了这两种方法的实际效果。
相关文章:
- 为什么我需要C++中不同的排序格式来对这个USACO代码上的数组和优先级队列进行排序
- 浮点格式数组的平均值
- 将'\x00\x00\x00'格式的字符串转换为无符号字符数组
- 如何将 numpy 二维数组作为一种可以用C++读取的二进制格式存储在磁盘上
- 如何将 2d 数组转换为 svg 或 png 格式的数独图像?
- 如何以指针格式表示多维数组?
- 如何使用 PPM 格式的 uchar* 数组填充 QPixmap
- 在格式正确的 char 数组中构造对象
- Python API用于解析包含数组格式的protobuf数据的二进制文件
- 从字节数组加载 QImage,而无需知道格式
- 如何从文件中读取并将内容存储在动态 2D 数组中并以网格格式显示
- 如何将WSTRING中的Unix时间戳转换为char数组中格式的日期
- 具有挑战性的数据文件格式,需要将其读取为包含类对象的数组的VAR
- LLDB数据格式和C数组
- 使用特定格式检查字符数组值
- 以树格式打印堆数组
- 格式化二维数组的标准偏差代码时遇到问题
- 函数模板中数组的 C/C++ 格式正确
- 基本数组格式的二叉搜索树
- 字符数组格式