gpt4 book ai didi

c++ - 错误 : size of array ‘u’ has non-integral type ‘double’ |

转载 作者:行者123 更新时间:2023-11-27 23:30:58 24 4
gpt4 key购买 nike

我有以下代码,但收到错误消息“数组‘u’的大小具有非整数类型‘double’|”

#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <fstream>


#define steps 1000.0
#define time 1000.0

using namespace std;


int main()
{

double u[steps][time];
double a;
int data[10];

cout << "Please enter the value of ratio cdt/dx :"<<endl;
cin >> a;


//initialize matrix u

for (int i=0;i<steps;i++)
for (int j=0;j<time;j++)
u[i][j]=0;

// fill matrix u

for (int i=1;i<time-1;i++) {
for (int j=1;j<steps-1;j++){
if (i==1)
u[j][i]=0; //initial condition
else
if (j==1 && i>=1 && i<=50)
u[j][i]=50;
else
u[j][i+1]=pow(a,2)*(u[j+1][i]-2*u[j][i]+u[j-1][i])+2*u[j][i]-u[j][i-1]; //solution of wave equation

}
}

//create and open data files
for (int k=1;k<=10;k++){
ofstream data[k];
data[k].open("Data"data[k]".dat");

}

//fill files with data
for (int i=1;i<steps;i++){
data1<<i<<"\t"<<u[i][99]<<endl;
data2<<i<<"\t"<<u[i][199]<<endl;
data3<<i<<"\t"<<u[i][299]<<endl;
data4<<i<<"\t"<<u[i][399]<<endl;
data5<<i<<"\t"<<u[i][499]<<endl;
data6<<i<<"\t"<<u[i][599]<<endl;
data7<<i<<"\t"<<u[i][699]<<endl;
data8<<i<<"\t"<<u[i][799]<<endl;
data9<<i<<"\t"<<u[i][899]<<endl;
data10<<i<<"\t"<<u[i][999]<<endl;

}

//close files
for (int k=1;k<=10;k++){
data[k].close();
}

return 0;
}

这个错误是关于 u 的大小吗?我该如何克服它?另外,在这部分代码中

//create and open data files
string k;
stringstream ss;
ss << k;
filename += ss.string();
string filename = "Data";
for (int k=1;k<=10;k++){
ofstream data[k];
filename += data[k];
filename += ".dat";
data[k].open(filename);
}

它给我“文件名未声明”和“‘struct std::stringstream’没有名为‘string’的成员”

我做那个循环是因为我试图避免

数据流1; ofstream data2;.......我能让它工作吗?

谢谢!

最佳答案

关于 data[k].open("Data"data[k]".dat");。在 C 和 C++ 中,您可以通过编写 "foo"XXX "bar" 来加入 string literals,但这不适用于运行时才知道的值。相反,您必须使用 std::string+ 运算符,例如:

std::string filename = "Data";
filename += data[k];
filename += ".dat";
data[k].open(filename);

或者(如果 open 使用普通的 C 字符指针):

data[k].open(filename.c_str());

关于c++ - 错误 : size of array ‘u’ has non-integral type ‘double’ |,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5457858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com