我正在研究从文件读取数据,处理数据并写入另一个文件的类的程序。我们需要在程序中使用两个函数,并且我相信我的程序由于函数的某些错误而无法正常工作。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;
}
你会得到什么错误? – 2012-01-30 05:14:37
程序的输出在摄氏但不是Fahrneheit时给出正确的温度,所以我认为tempConversion函数有些问题。此外,日期不打印到屏幕上,所以我猜测timeConverter也存在问题。 timeConverter在main函数的主体中工作,但是一旦我将它放入函数中,它就停止工作。我想我没有正确传递数据。 – LuckyMeadows 2012-01-30 05:17:05
此外,我知道它目前正在打印到屏幕而不是文件,只是这样做来快速检查输出。 – LuckyMeadows 2012-01-30 05:17:32