我不太確定我會如何去做這件事。我有一個數組在每一行中有幾個值。例如,有一個「名稱」值,一個「id」值和一些其他值。我正在閱讀另一個文本文件,該文件有一個數字,我想然後'找到'數組並編輯它。我不知道我是否正確地解釋了它,但是讓我們說,例如,新的文本文件說。如何從數值中找到數組的一行?
2000 -1.6
我會想,然後找到「陣列」擁有的「2000'
的ID值。假設Array[3]
(使用陣列作爲我的陣列的示例名稱)的ID值爲2000
。我如何讓程序「知道」Array[3]
具有相同的值?我想讓它尋找與文本文件中的行具有相同ID的行。
此外,有沒有辦法讀取'-1.6'
作爲一個整數1.6
,但作爲一個負數沒有專門挑出它?如果我的解釋很奇怪,我很抱歉,但我想不出有任何其他方式說出來。
編輯:這是我現在的代碼。這只是程序中的一個問題,我不知道該怎麼辦。函數「getdata2」是我要做的地方。我希望該函數能夠讀取每行中有兩個值的文本文件(我知道該怎麼做);一個4位數字(ID)和一個數字值,如「-1.6」。我想查找ID與A/B/C.txt文件中的ID匹配的數組的行,並使用A/B/C.txt文件中的數值編輯其「weight」值。所以我想要做的一個例子就是這個。我執行我的程序。第三行的ID值爲'2000',權重值爲'52'。在我讀取peeps.txt(函數getdata中使用的第一個文本文件)的所有行後,我會執行函數getdata2,它將從A/B/C.txt讀取數據。如果該文件中的第一行文本的內容爲「2000 -1.6」,那麼我會希望它找到ID值爲2000的數組部分(本例中爲Person [3]),然後修改其重量值從中減去1.6,將其更改爲50.4。但我不知道如何去「發現」它。
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
using namespace std;
struct person
{
string firstname;
int id;
double height;
double weight;
double bmi;
double change;
};
void getdata (person *array, person *ptr);
void printData (person *array, person *ptr);
void calculateBMI (person *array, person*ptr);
void getdata2 (person *array, person *ptr);
int main()
{
person array[13];
person *ptr;
ptr = &array[0];
getdata(array, ptr);
calculateBMI(array, ptr);
printData(array, ptr);
}
void getdata (person *array, person *ptr)
{
ifstream inData;
inData.open("peeps.txt");
while(!inData.eof())
{
for(ptr = &array[0]; ptr < &array[13];ptr++)
{
inData >> ptr->firstname >> ptr->id
>> ptr->height >> ptr->weight;
}
}
}
void printData (person *array, person *ptr)
{
cout << "Name" << " ID" << " Height"
<< " Weight " << "BMI" << endl;
for(ptr = &array[0]; ptr < &array[13];ptr++)
{
cout << ptr->firstname << " "<< ptr->id
<< " "<< ptr->height << " "<< ptr->weight <<
" "<< ptr->bmi << endl;
}
}
void calculateBMI (person *array, person*ptr)
{
for(ptr = &array[0]; ptr < &array[13];ptr++)
{
ptr-> bmi = 703*(ptr->weight/((ptr->height)*(ptr->height)));
}
}
void getdata2 (person *array, person *ptr)
{
ifstream inData;
string filename;
int size;
cout << "Select from file 'A', 'B', or 'C'" << endl;
cin >> filename;
if (filename == "a" || filename == "A")
{
inData.open("A.txt");
cout << "Opening A.txt..." << endl;
size = 17;
}
if (filename == "b" || filename == "B")
{
inData.open("B.txt");
cout << "Opening B.txt..." << endl;
size = 9;
}
if (filename == "c" || filename == "C")
{
inData.open("C.txt");
cout << "Opening C.txt..." << endl;
size = 12;
}
else
{
cout << "You have entered an incorrect filename." << endl;
}
while (size > 0)
{
size--;
}
}
你能更清楚一點你正在使用什麼類型?你在處理矢量? –
bdwain
還有什麼你的意思是「每行有幾個值」? – bdwain
這不是一個合理的問題......您應該嘗試自己編寫一些代碼,並在遇到困難時詢問具體問題。現在,我們無法知道您是否知道如何打開文件,解析值,使用矢量,for循環等 - 所以我們不知道要提供多少細節。 –