LuckyMeadows
LuckyMeadows

Reputation: 17

C++ Homework Function Errors

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

Answers (1)

minus
minus

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

Related Questions