ファイルからデータを取得し、それを指定された構造体と構造体の配列に入力してからファイルを出力するのに苦労しています。次のような 96 行を含むファイルが与えられます。
Arzin、Neil
2.3 6.0 5.0 6.7 7.8 5.6 8.9 7.6
Babbage、Charles
2.3 5.6 6.5 7.6 8.7 7.8 5.4 4.5
このファイルは 24 人の異なる人について続き、異なるスコアで繰り返されます (2 行目)。最初の数値、この場合は両方の人で 2.3 が難易度です。次の 6 つの数字はスコアです。
構造体と配列、およびコードを設定するために、次のデータが与えられます。
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <cmath>
using namespace std;
int main ()
{
ifstream inFile;
inFile.open("C://diveData.txt");
// checking to see if file opens correctly
if (!inFile)
{
cout << "Error opening the file!" << endl;
}
const int numRounds = 2; // variable to hold the number of rounds
const int numScores = 7; // variable to hold the number of rounds
const int numDivers = 24; // variable to hold the number of divers
typedef double DifficultyList[numRounds]; // 1D array for storing difficulty of dives on each round
typedef double ScoreTable [numRounds] [numScores]; // 2D array of dive scores
// struct to store information for one diver
struct DiverRecord
{
string name;
double totalScore;
double diveTotal;
DifficultyList diff;
ScoreTable scores;
};
DiverRecord DiverList[numDivers];
// my attempt at printing out the contents of the file
while (!EOF)
{
for (int x = 0; x < 25; x++)
{
infile >> DiverList[x].name;
inFile >> DiverList[x].totalScore;
inFile >> DiverList[x].diveTotal;
cout << DiverList.[x].name << endl;
cout << DiverList.[x].totalScore << endl;
cout << DiverList.[x].diveTotal << endl;
}
}
return 0;
}