Reputation: 17
I'm working on a program for class that reads data from a file, the processes the data and writes to another file. We are required to use two functions in the program, and I believe my program is not functioning properly because of some error with my functions.
First, let me describe the input file and then I will add my code. The input file starts with a sentinel number to let the program know the number of lines to be read. Each following line consists of 12 numbers representing a date in the form YYYYMMDDHHMM and a temperature reading in the form of Xtemp where x is either c or f (e.g. C17.5 or F64.12). Our output is supposed to convert temps to Celsius, if they aren't already and then each line should appear in the format "17.5 C --- recorded on 04/12/2009" and so on for each line.
Here is my code so far. Like I said I think the problem is in the functions.
#include <iostream>
#include <fstream>
#include <iomanip>
#include <cstdlib>
using namespace std;
void timeConverter(char timeStamp[]);
float tempConverter(float);
int main()
{
ifstream fin;
ofstream fout;
int endcycler, cycler;
char timeStamp[11];
char tempUnit;
float tempData;
fin.open("aquarenadata.dat");
if (!fin)
{
cout<<"Error opening input file"<<endl;
system("pause");
return -1;
}
fout.open("formatteddata.dat");
fin >> endcycler;
cycler = 0;
while (cycler < endcycler)
{
fin >> timeStamp;
fin >> tempUnit;
fin >> tempData;
if (tempUnit == 'C' || tempUnit == 'c')
cout << tempData << " C --- recorded on ";
else if (tempUnit == 'F' || tempUnit == 'f')
{
tempData = tempConverter(tempData);
cout << tempData << " C --- recorded on ";
}
else
{
cout <<"Invalid temperature scale"<<endl;
system("pause");
return -2;
}
void timeConverter();
cycler++;
}
fin.close();
fout.close();
system("pause");
return 0;
}
void timeConverter (char timeStamp[])
{
cout<<timeStamp[4]<<timeStamp[5]<< "/" <<timeStamp[6]<<timeStamp[7]<< "/"<<timeStamp[0]<<timeStamp[1]<<timeStamp[2]<<timeStamp[3]<< " at " <<timeStamp[8]<<timeStamp[9]<<timeStamp[10]<<timeStamp[11]<<endl;
}
float tempConverter (float tempData)
{
float result;
result = (tempData - 32) * (5 / 9);
return result;
}
Upvotes: 0
Views: 191
Reputation: 706
As far as the problem with displaying date, it's probably the fact that you are not actually calling the timeConverter function.
Instead of
void timeConverter();
Try
timeConverter(timestamp);
You may also want to make sure that the input is in the correct format, i.e timestamp actually is at least of length 8
For the error in the conversion, it will be easier if you give us actually value that it returns for some inputs.
Upvotes: 1