将单词和数字文件输入数组c++; P>好,我对编程不是很有经验,但是我有一个任务,是用一个C++程序,用数值方法计算混合物中三种物质的温度,这是基于混合物中每种物质的焓和百分含量。它基本上是一个h=a1*T+a2*T^2+的多项式。。。高达a6。表中给出了H20、H2和O2的系数a1至a6。我的程序需要能够从.dat文件中读取物质名称和系数值,以便我可以将系数用于我的方程式。这就是我需要帮助的地方。如何让程序将物质名称和系数值输入到数组中,以便在方程式中使用它们?对这本小说感到抱歉,但我尽量提供更多的上下文。 下面是我的.dat文件中的内容,以及我试图放入数组中的内容。物质名称是第一个,然后是a1、a2等 H2O 406598.40 440.77751 -.12006604 .000015305539 -.00000000072544769 -4475789700 H2 50815.714 9.9343506 -.000027849704 -.00000035332966 .000000000041898079 -14329128 O2 961091.64 199.15972 -.052736240 .00000897950410 -.00000000063609681 -318699310 H2O 406598.40 440.77751-.12006604.000015305539-.000000000 72544769-4475789700 H2 50815.714 9.9343506-.000027849704-.000000 35332966.0000000000 41898079-14329128 O2 961091.64 199.15972-.052736240.00000897950410-.000000000 63609681-318699310
这是到目前为止我的源代码,但它不起作用,我很迷茫将单词和数字文件输入数组c++; P>好,我对编程不是很有经验,但是我有一个任务,是用一个C++程序,用数值方法计算混合物中三种物质的温度,这是基于混合物中每种物质的焓和百分含量。它基本上是一个h=a1*T+a2*T^2+的多项式。。。高达a6。表中给出了H20、H2和O2的系数a1至a6。我的程序需要能够从.dat文件中读取物质名称和系数值,以便我可以将系数用于我的方程式。这就是我需要帮助的地方。如何让程序将物质名称和系数值输入到数组中,以便在方程式中使用它们?对这本小说感到抱歉,但我尽量提供更多的上下文。 下面是我的.dat文件中的内容,以及我试图放入数组中的内容。物质名称是第一个,然后是a1、a2等 H2O 406598.40 440.77751 -.12006604 .000015305539 -.00000000072544769 -4475789700 H2 50815.714 9.9343506 -.000027849704 -.00000035332966 .000000000041898079 -14329128 O2 961091.64 199.15972 -.052736240 .00000897950410 -.00000000063609681 -318699310 H2O 406598.40 440.77751-.12006604.000015305539-.000000000 72544769-4475789700 H2 50815.714 9.9343506-.000027849704-.000000 35332966.0000000000 41898079-14329128 O2 961091.64 199.15972-.052736240.00000897950410-.000000000 63609681-318699310,c++,arrays,file,input,C++,Arrays,File,Input,这是到目前为止我的源代码,但它不起作用,我很迷茫 #include <iostream> #include <string> #include <fstream> using namespace std; int main() { double myArray[21]; ifstream file("thermo2.dat"); if (file.is_open()) { for (int i = 0; i < 21; ++i)
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
double myArray[21];
ifstream file("thermo2.dat");
if (file.is_open())
{
for (int i = 0; i < 21; ++i)
{
file >> myArray[i];
}
}
else
{
cout << "the file did not open";
}
for (int i = 0; i < 21; ++i)
{
cout << " " << myArray[i];
}
return 0;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
双myArray[21];
ifstream文件(“thermo2.dat”);
if(file.is_open())
{
对于(int i=0;i<21;++i)
{
文件>>myArray[i];
}
}
其他的
{
我的建议是:
创建一个struct
,以保存每个材质的数据
struct Material
{
std::string name;
double coeffcients[6];
};
创建一个函数,从流中读取一个材料
std::istream& operator>>(std::istream& in, Material& mat)
{
// Read the name.
in >> mat.name;
// If there was an error, return.
// Let the calling function deal with errors.
if (!in)
{
return in;
}
// Read the coefficients.
for (int i = 0; i < 6; ++i )
{
in >> mat.coefficients[i];
if (!in)
{
return in;
}
}
return in;
};
将您的结构声明为:
struct Data
{
string species;
double a[6];
}
全文如下:
for(int i = 0; i < 3; i++) {
fin >> database[i].species;
for (int j = 0; j < 6; j++) {
fin >> database[i].a[j];
}
}
for(int i=0;i<3;i++){
fin>>数据库[i].物种;
对于(int j=0;j<6;j++){
fin>>数据库[i].a[j];
}
}
首先决定如何存储数据。你想要一个数组还是三个数组?你需要文件中的物质名称吗?如果需要,你想要如何存储它们?我尝试使用一个结构数组,但我正在努力让它工作,如果你能看一下我发布的编辑,并提供任何有用的见解!在我意识到之前你已经回复了,我正试图让它与一个结构一起工作。我有什么办法可以让它这样工作吗?我一直在a1-a6的所有getlines中遇到错误。我将把我当前的代码作为一个编辑发布getline
,不能用来读取双重。为此,请使用操作符>
。谢谢!这帮了大忙!
struct Data
{
string species;
double a[6];
}
for(int i = 0; i < 3; i++) {
fin >> database[i].species;
for (int j = 0; j < 6; j++) {
fin >> database[i].a[j];
}
}