我正在研究從文件讀取數據,處理數據並寫入另一個文件的類的程序。我們需要在程序中使用兩個函數,並且我相信我的程序由於函數的某些錯誤而無法正常工作。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