can't figue out what is wrong with the programme
I just could not figure out what is wrong with this programmed. I have tried as much as I could to make it work. But, it does not seem to be working. So, I would greatly appreciate it if anybody could give me some help to make this programme work. Anyway here is the code for the programme:
Code:
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
using namespace std;
class PollenAirQuality
{
public:
PollenAirQuality() {PollenCount= AirIndex= 0; }
void SetPollenCount(double Count) { PollenCount = Count; }
double GetPollenCount() { return PollenCount;
void SetAirIndex(double Index) { AirIndex = Index; }
double GetAirIndex() {return AirIndex; }
protected:
double PollenCount;
double AirIndex;
};
class WeatherStation : public PollenAirQuality
{
public:
WeatherStation();
void SetDesignation(string ID) { StationDesignation = ID; }
void SetAgent(string Agent) { StationAgent = Agent; }
void SetTemperature(double Degree) { Temperature = Degree; }
double Convert(double DegreeF);
string GetDesignation() { return StationDesignation; }
string GetAgent() { return StationAgent; }
double GetTemperature() { return Temperature; }
protected:
string StationDesignation;
string StationAgent;
double Temperature;
};
WeatherStation::WeatherStation()
{
StationDesignation = "";
StationAgent = "";
Temperature = 0;
}
double WeatherStation::Convert(double degreeF)
{
double degreeC;
// convert Fahrenheit to Celcius
degreeC = ((degreeF - 32) * 5) / 9;
return degreeC;
}
class VectorList
{
vector<WeatherStation> List;
vector<WeatherStation>::iterator ILister;
string FileName;
public:
VectorList() { FileName = "Temp"; }
VectorList(string FName) { FileName = FName; }
void AddStations();
void PostStationInfo();
void DailyReport();
void HighLowReport();
void PollenCount();
void AirQualityIndex();
double GetMaxF();
double GetMinF();
double GetAvgF();
void SetFileName(string FName) { FileName = FName; }
void WriteToFile();
void ReadFromFile();
};
void VectorList::AddStations()
{
WeatherStation Station;
string Designation, Agent;
cout << "Enter Station Information Below, Stop To Quit\n";
for (;;)
{
cout << "\n-------------------------------\n";
cout << "Enter Weather Station Designation: ";
getline (cin, Designation);
if (Designation == "Stop")
break;
Station.SetDesignation( Designation );
cout << "\nEnter Contact Person: ";
getline (cin, Agent);
if (Agent == "Stop")
break;
Station.SetAgent( Agent );
cout << "\n-------------------------------\n";
List.push_back(Station);
}
}
void VectorList::PostStationInfo()
{
double Degree, Count, Index;
cout << "Enter reported temperatures: (in Fahrenheit) \n\n";
for (ILister = List.begin(); ILister < List.end(); ILister++)
{
cout << ILister->GetDesignation() << ":\n";
cout << ILister->GetAgent();
cout << "\nEnter Temperature:\t";
cin >> Degree;
ILister->SetTemperature( Degree );
cout << "\n\tPollen Count:\t";
cin >> Count;
ILister->SetPollenCount( Count );
cout << "\n\tAir Quality Index:\t";
cin >> Index;
ILister->SetAirIndex( Index );
cin.ignore(100, '\n');
}
}
void VectorList::DailyReport()
{
cout << " NGS Daily Temperature Report \n";
cout << "===========================================================\n";
cout << "\t\t Fahrenheit(°F) \t Celsius (°C)";
for (ILister = List.begin(); ILister < List.end(); ILister++)
{
cout << "\n-----------------------------------------------------------\n";
cout << (*ILister).GetDesignation() << "\t\t ";
cout << (*ILister).GetTemperature() << "\t\t\t"
<< (*ILister).Convert( (*ILister).GetTemperature() );
}
cout << "\n-----------------------------------------------------------";
cout << "\nMean Temperature: \t " << GetAvgF() // The first problem is here
<< "\t\t\t" << (*ILister).Convert(GetAvgF() );
cout << "\n===========================================================\n\n";
}
void VectorList::HighLowReport()
{
cout << " NGS High-Low Report ";
cout << "\n==========================================================";
cout << "\n\t\t Fahrenheit(°F) \t Celsius (°C)";
cout << "\n----------------------------------------------------------";
cout << "\nLowest Temperature:\t " << GetMinF() //Second problem
<< "\t\t\t" << (*ILister).Convert( GetMinF() );
cout << "\n----------------------------------------------------------";
cout << "\nHighest Temperature:\t " << GetMaxF() //Third problem
<< "\t\t\t" << (*ILister).Convert( GetMaxF() );
cout << "\n----------------------------------------------------------";
cout << "\n==========================================================\n";
}
void VectorList::PollenCount()
{
cout << " NGS Daily Pollen Report\n";
cout << "==================================\n";
for (ILister = List.begin(); ILister < List.end(); ILister++)
{
cout << ILister->GetDesignation() << ":\t\t" << ILister->GetPollenCount() << "\n";
}
cout << "==================================\n\n";
}
void VectorList:: AirQualityIndex()
{
cout << " NGS Air Quality Index Report\n";
cout << "==================================\n";
for (ILister = List.begin(); ILister < List.end(); ILister++)
{
cout << ILister->GetDesignation() << ":\t\t" << ILister->GetAirIndex() << "\n";
}
cout << "==================================\n\n";
}
double VectorList::GetMaxF()
{
double maxF;
maxF = ILister->GetTemperature();
for (ILister = List.begin(); ILister < List.end(); ILister++)
{
// find the highest temperture in Fahrenheit
if ( (*ILister).GetTemperature() > maxF)
maxF = (*ILister).GetTemperature();
}
return maxF;
}
double VectorList::GetMinF()
{
double minF;
minF = ILister->GetTemperature();
for (ILister = List.begin(); ILister < List.end(); ILister++)
{
// find the lowest temperture in Fahrenheit
if ( (*ILister).GetTemperature() > minF)
minF = (*ILister).GetTemperature();
}
return minF;
}
double VectorList::GetAvgF()
{
double Total = 0, Mean;
for (ILister = List.begin(); ILister < List.end(); ILister++)
Total += ILister->GetTemperature();
Mean = Total / List.size();
return Mean;
}
void VectorList::WriteToFile()
{
fstream OutFile(FileName.c_str(), ios::out);
for ( ILister = List.begin(); ILister < List.end(); ILister++)
{
OutFile << ILister->GetDesignation() << endl;
OutFile << ILister->GetAgent() << endl;
OutFile << ILister->GetTemperature() << endl;
OutFile << ILister->GetPollenCount() << endl;
OutFile << ILister->GetAirIndex() << endl;
}
OutFile.close();
}
void VectorList::ReadFromFile()
{
fstream InFile(FileName.c_str(), ios::in);
string Designation, Agent;
double Temperature, Count, Index;
WeatherStation Temp;
while(true)
{
getline(InFile, Designation);
getline(InFile, Agent);
InFile >> Temperature;
InFile >> Count;
InFile >> Index;
InFile.ignore(100, '\n');
if(InFile.eof())
break;
Temp.SetDesignation( Designation );
Temp.SetAgent( Agent );
Temp.SetTemperature( Temperature );
Temp.SetPollenCount( Count );
Temp.SetAirIndex( Index );
List.push_back(Temp);
}
InFile.close();
}
void Menu();
int main()
{
int I = 0;
VectorList Station;
string Command;
while(true)
{
Menu();
cout << "Enter Command: ";
getline (cin, Command);
cout << "\n\n";
if (Command == "Add Stations")
{
Station.AddStations();
I = 1;
}
if (Command == "Post Station Info" && I == 1)
{
Station.PostStationInfo();
I = 2;
}
if (Command == "Quit")
break;
else
{
if ( I == 1 )
cout << "\nPlease Post Station Info\n";
if (Command == "Daily Report" && I == 2)
Station.DailyReport();
if (Command == "High-Low Report" && I == 2)
Station.HighLowReport();
if (Command == "Daily Pollen Count" && I == 2)
Station.PollenCount();
if (Command == "Daily Air Quality Index" && I == 2)
Station.AirQualityIndex();
if (Command == "Change File Name")
{
string FName;
cout << "Enter File Name: ";
getline(cin, FName);
Station.SetFileName(FName);
cout << "File Name is Changed";
}
if (Command == "Save To File")
{
Station.WriteToFile();
cout << "File is saved\n";
}
if (Command == "Read From File")
{
Station.ReadFromFile();
I = 2;
cout << "Opened Saved File\n";
}
}
}
}
void Menu()
{
cout << "\nChoices:";
cout << "\n---------------------------";
cout << "\n Add Stations";
cout << "\n Post Station Info";
cout << "\n Daily Report";
cout << "\n High-Low Report";
cout << "\n Daily Pollen Count";
cout << "\n Daily Air Quality Index";
cout << "\n Change File Name";
cout << "\n Save To File";
cout << "\n Read From File";
cout << "\n Quit";
cout << "\n---------------------------\n";
}
so, when I try to compile the programme, the compiler shows me a number of errors. And, among all the errors the first error it shows is in the line 27; the error says " invalid use of undefined type `class PollenAirQuality' ". And, I am not sure but I think that all other errors are the result of this error. Anyway, I hope that somebody will give me some suggesstions to fix the problem.