我不确定我会怎么做。我有一个数组,每行有几个值。例如,有一个“name”值、一个“id”值和一些其他值。我正在阅读另一个文本文件,它有一个数字,然后我想“找到”数组并对其进行编辑。我不确定我的解释是否正确,但比如说,新的文本文件说。
2000 -1.6
然后我想找到 ID 值为 ' 的“数组” 2000'
。假设Array[3]
(使用 Array 作为我的数组的示例名称)的 ID 值为2000
. 我如何让程序“知道”Array[3]
具有相同的价值?我想让它查找与文本文件中的行具有相同 ID 的行。
此外,有没有一种方法可以将其读取'-1.6'
为 的整数1.6
,但作为负数而无需特别指出?如果我的解释很奇怪,我很抱歉,但我想不出任何其他方式来表达它。
编辑:这是我现在拥有的代码。这只是程序中的一个问题,我不确定如何解决。函数“getdata2”是我要这样做的地方。我希望该函数读取每行有两个值的文本文件(我知道该怎么做);一个 4 位数字(ID)和一个像“-1.6”这样的数值。我想找到 ID 与 A/B/C.txt 文件中的 ID 匹配的数组行,并使用 A/B/C.txt 文件中的数值编辑其“权重”值。所以我想做的一个例子就是这个。我执行我的程序。第三行的 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--;
}
}