2012-01-30 71 views
0

我正在研究从文件读取数据,处理数据并写入另一个文件的类的程序。我们需要在程序中使用两个函数,并且我相信我的程序由于函数的某些错误而无法正常工作。C++作业功能错误

首先,让我描述输入文件,然后添加我的代码。输入文件以一个标记号开始,让程序知道要读取的行数。每行接下来的行由12个数字组成,表示YYYYMMDDHHMM形式的日期和Xtemp形式的温度读数,其中x为c或f(例如C17.5或F64.12)。我们的输出应该将临时温度转换为摄氏温度,如果它们还没有出现,那么每一行都应该以格式“17.5 C ---记录于2009年12月4日”格式出现,以此类推。

这是我的代码到目前为止。就像我说过的,我认为问题在于功能。

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

你会得到什么错误? – 2012-01-30 05:14:37

+0

程序的输出在摄氏但不是Fahrneheit时给出正确的温度,所以我认为tempConversion函数有些问题。此外,日期不打印到屏幕上,所以我猜测timeConverter也存在问题。 timeConverter在main函数的主体中工作,但是一旦我将它放入函数中,它就停止工作。我想我没有正确传递数据。 – LuckyMeadows 2012-01-30 05:17:05

+0

此外,我知道它目前正在打印到屏幕而不是文件,只是这样做来快速检查输出。 – LuckyMeadows 2012-01-30 05:17:32

回答

1

至于显示日期的问题,这可能是事实上,你实际上没有调用timeConverter函数。取而代之的

void timeConverter(); 

尝试

timeConverter(timestamp); 

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

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

+0

timeConverter工作完美。现在它以正确的格式为我的所有输入打印正确的时间!至于temp对话,如果我用F标签放置一个temp,它总是给出0. if,else if语句适用于C和除c或f以外的任何值,而不是F. – LuckyMeadows 2012-01-30 05:53:39