I am having a problem connecting my external file with a stream...I have only one error for the entire program. But just to give the background of it I am to extract data froma .txt file into the program and then input the data into an array of structs called data[]. within the struct there are three members called id, scores, and grade. Im having problems though because when it does execute it only shows 0s instead of the student id and scores in the file. below is my code and the data in the file scores.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <iomanip>
using namespace std;
struct studentInfo
{
int id;
int score;
char grade;
};
const int MAX_NUM = 50;
studentInfo data[MAX_NUM];
bool successful = false;
bool readStuData(ifstream, bool&, studentInfo data[]);
float getAverage(studentInfo data[], float& mean);
void assignGrades(studentInfo data[], float);
void reportResults(studentInfo data[]);
int _tmain(int argc, _TCHAR* argv[], float average)
{
ifstream inData("C:\\\\Documents and Settings\\Floyd\\My Documents\\scores.txt", ios::in);
readStuData(inData, successful, data);
getAverage(data, average);
cout<<"Student "<<data[0].id<<"test score is "<<data[0].score<<endl;
assignGrades(data, average);
reportResults(data);
return 0;
}
bool readStuData(ifstream inData, bool& successful, studentInfo data[])
{
int number;
if(inData.fail())
{
cerr << "***ERROR: Cannot open" << inData << endl;
successful = false;
return successful;
return EXIT_FAILURE;
}
else
{
successful = true;
return successful;
inData >> data[0].id >> data[0].score;
number = 0;
while (!inData.eof())
{
if (number=0, number<MAX_NUM, number++)
{
inData >> data[number].id >> data[number].score;
number++;
}
}
}
inData.close();
return successful;
}
float getAverage(studentInfo data[], float& mean)
{
float sum = 0.0;
int i;
for (i=0; i<MAX_NUM; i++)
{
sum = data[i].score + sum;
}
mean = sum / MAX_NUM;
return (mean);
}
void assignGrades(studentInfo data[], float average)
{
int i;
for (i=0; i<MAX_NUM; i++)
{
if ((data[i].score <= average + 10) || (data[i].score >= average - 10))
{
data[i].grade = 'S';
}
if (data[i].score > average + 10)
{
data[i].grade = 'O';
}
if (data[i].score < average - 10)
{
data[i].grade = 'U';
}
}
}
void reportResults(studentInfo data[])
{
ofstream out("C:\\\\Documents and Settings\\Floyd\\My Documents\\report.txt");
out << "TABLE OF STUDENT SCORES"<< setw(4) <<"Student ID #"<< setw(10)<<"Score"<< setw(14)<<"Grade"<< endl;
for (int i=0;i<MAX_NUM; i++)
out << setw(8) << data[i].id << setw(14)<< data[i].score << setw(14)<< data[i].grade << endl;
}
| |
tHIS IS THE .TXT FILE WHICH IS TO BE PUT INTO THE STREAM.
scores.txt
123 90
242 70
376 97
485 58
511 95
623 87
798 75
856 79
921 85
955 64
THIS IS THE ONE ERROR I AM GETTING:
c:\program files\microsoft visual studio 9.0\vc\include\fstream(676) : error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
c:\program files\microsoft visual studio 9.0\vc\include\ios(151) : see declaration of 'std::basic_ios<_Elem,_Traits>::basic_ios'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
This diagnostic occurred in the compiler generated function 'std::basic_ifstream<_Elem,_Traits>::basic_ifstream(const std::basic_ifstream<_Elem,_Traits> &)'
with
[
_Elem=char,
_Traits=std::char_traits<char>
]
ILL APPRECIATE ANY HELP ANYONE CAN GIVE ME.