好的,我對編程不是很有經驗,但是我有一個任務來創建一個使用數值方法計算三種物質混合物溫度的C++程序,對混合物中每種物質的焓和百分比。它基本上是一個多項式h = a1 * T + a2 * T^2 + ...直到a6。這些係數a1到a6在表格中給出,對於H20,H2和O2中的每一個。我的程序需要能夠從.dat文件中讀取物質名稱和係數值,以便我可以將係數用於我的等式。這是我需要幫助的。我怎樣才能讓程序將物質名稱和係數值輸入到一個數組中,以便我可以在我的方程中使用它們?對小說不好意思,但我儘可能地給出了儘可能多的上下文。下面的 正是我的.dat文件中的內容,以及我想要放入數組中的內容。該物質的名稱,其次爲A1,A2,等將單詞和數字文件輸入到數組中C++
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
這是我的源代碼,到目前爲止,但它不工作,我敢丟失。
#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;
}
謝謝!
編輯:開始嘗試使用結構數組....我一直得到一個錯誤:沒有匹配函數調用'getline(std :: ifstream &,double &,char)'。繼承人的代碼:
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
using namespace std;
struct Data
{
string species;
double a1, a2, a3, a4, a5, a6;
};
int main()
{
ifstream fin;
fin.open("thermo2.dat");
if (fin.fail())
{
cout << "Failed to open file" << endl;
}
Data * database = new Data[3];
string line;
for(int i = 0; i < 3; i++)
{
getline(fin, database[i].species, '\t');
getline(fin, database[i].a1, '\t');
getline(fin, database[i].a2, '\t');
getline(fin, database[i].a3, '\t');
getline(fin, database[i].a4, '\t');
getline(fin, database[i].a5, '\t');
getline(fin, database[i].a6, '\t');
}
system("pause");
return 0;
}
首先決定要如何存儲數據。你想要一個還是三個?你需要文件中的物質名稱嗎?如果是這樣,你想如何存儲*他們?* – Beta 2014-10-02 04:21:55
我想使用一個結構數組,但我努力讓它工作,如果你可以看看我發佈的編輯並提供任何見解'太好了! – 2014-10-03 02:33:03