我是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
有什么想法吗?提前谢谢。
答案 0 :(得分:0)
由于x_vect
是一个数组,因此需要循环以通过执行类似
for(int i=0;i<n;i++)
cout << x_vect[i] << endl;
在您的代码中还有其他一些问题,如几条评论中所述
答案 1 :(得分:0)
idone sample 显示这两种情况。
打印循环:
x_vect
是一个数组,并作为指针cout
传递给float *
。
该行:
cout << x_vect << endl;
将指针地址打印到stdout。
要从数组中打印一个值,您需要使用指针语法取消引用指针:
*(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 sample 显示这两种情况。