C++作业函数错误

C++ Homework Function Errors

本文关键字:错误 函数 作业 C++      更新时间:2023-10-16

我正在为class编写一个程序,该程序从文件中读取数据,处理数据并写入另一个文件。我们需要在程序中使用两个函数,我认为我的程序无法正常运行,因为我的函数出现了一些错误。

首先,让我描述输入文件,然后添加我的代码。输入文件以一个哨兵数字开始,让程序知道要读取的行数。下面的每一行由12个数字组成,代表YYYYMMDDHHMM形式的日期和Xtemp形式的温度读数,其中x是c或f(例如C17.5或F64.12)。我们的输出应该将温度转换为摄氏度,如果它们还没有,那么每一行都应该以"17.5 c---recorded on 04/12/2009"的格式出现,依此类推。

这是我迄今为止的代码。正如我所说,我认为问题出在函数上。

#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;
}

至于显示日期的问题,可能是因为您实际上并没有调用timeConverter函数。

代替

void timeConverter();

尝试

timeConverter(timestamp);

您可能还想确保输入的格式正确,即时间戳实际长度至少为8

对于转换中的错误,如果你给我们一些输入返回的实际值,会更容易。