-5
这里是我现在拥有的代码。就目前而言,它可以完成它所需的一切,以返回必要的相应值。但是,我缺少的一件事是返回与温度相关的索引号相对应的月份的函数。创建一个字符串函数返回一个月
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <cstdlib>
using namespace std;
const int NUM_COLS = 2;
const int NUM_ROWS = 12;
void getData(ifstream& tempFile, double temps[][NUM_COLS]);
double averageHigh(double temps[][NUM_COLS], int NUM_ROWS);
double averageLow(double temps[][NUM_COLS], int NUM_ROWS);
double indexHighTemp(double temps[][NUM_COLS], int NUM_ROWS);
double indexLowTemp(double temps[][NUM_COLS], int NUM_ROWS);
string monthForTemp(double temps[][NUM_COLS], int NUM_ROWS);
/*
*
*/
int main(int argc, char** argv)
{
ifstream tempFile;
double temps[NUM_ROWS][NUM_COLS] = {0.0};
tempFile.open("Ch8_ex9Data.txt");
if (!tempFile)
{
cout << "File does not exist, contact system admin" << endl;
return 1;
}
getData (tempFile, temps);
double highAverage = averageHigh(temps, NUM_ROWS);
cout << "Average high is: " << highAverage << endl;
double lowAverage = averageLow(temps, NUM_ROWS);
cout << "Average low is: " << lowAverage << endl;
int indexHiTemp = indexHighTemp(temps, NUM_ROWS);
cout << "High temp index is: " << indexHiTemp
<< " which is " << temps[indexHiTemp][0]
<< " degrees F" << endl;
int indexLoTemp = indexLowTemp(temps, NUM_ROWS);
cout << "Low temp index is: " << indexLoTemp
<< " which is " << temps[indexLoTemp][1]
<< " degrees F" << endl;
return 0;
}
void getData(ifstream& tempFile, double temps[][NUM_COLS])
{
cout << fixed << showpoint << setprecision(1);
double hiTemp, loTemp;
tempFile >> hiTemp >> loTemp;
int rowIndex = 0;
while(tempFile)
{
temps[rowIndex][0] = hiTemp;
temps[rowIndex][1] = loTemp;
rowIndex++;
tempFile >> hiTemp >> loTemp;
}
}
double averageHigh(double temps[][NUM_COLS], int NUM_ROWS)
{
double avgHigh = 0.0;
double sum = 0.0;
int i;
for (i = 0; i < NUM_ROWS; i++)
{
sum += temps[i][0];
//cout << temps[i][0] << endl;
}
avgHigh = sum/NUM_ROWS;
return avgHigh;
}
double averageLow(double temps[][NUM_COLS], int NUM_ROWS)
{
double avgLow = 0.0;
double sum = 0.0;
int i;
for (i = 0; i < NUM_ROWS; i++)
{
sum += temps[i][1];
//cout << temps[i][1] << endl;
}
avgLow = sum/NUM_ROWS;
return avgLow;
}
double indexHighTemp(double temps[][NUM_COLS], int NUM_ROWS)
{
cout << fixed << showpoint << setprecision(1);
double index = 0.0;
double maxHighTemp = 0.0;
for (int i = 0; i < NUM_ROWS; i++)
{
if (temps[i][0] > maxHighTemp)
{
maxHighTemp = temps[i][0];
index = i;
}
}
return index;
}
double indexLowTemp(double temps[][NUM_COLS], int NUM_ROWS)
{
cout << fixed << showpoint << setprecision(1);
double index = 0.0;
double maxLowTemp = 0.0;
string month = " ";
for (int i = 0; i < NUM_ROWS; i++)
{
if (temps[i][0] < maxLowTemp)
{
maxLowTemp = temps[i][1];
index = i;
}
}
return index, month;
}
string monthForTemp(double temps[][NUM_COLS], NUM_ROWS)
{
string month = " ";
switch (index)
{
case 1 :
month = "January";
break;
case 2 :
month = "February";
break;
case 3 :
month = "March";
break;
case 4 :
month = "April";
break;
case 5 :
month = "May";
break;
case 6 :
month = "June";
break;
case 7 :
month = "July";
break;
case 8 :
month = "August";
break;
case 9 :
month = "September";
break;
case 10 :
month = "October";
break;
case 11 :
month = "November";
break;
case 12 :
month = "December";
break;
}
return month;
}
我需要的行和列值传递给字符串函数,但我不能完全似乎得到它的权利。任何指针?
谢谢。
您的代码不会编译,并且您不会将月份'索引'传递给函数。 –
对。没有最后的功能,并且没有“回归月”;尽管如此,indexLowTemp的一部分。我试图找到一种方法将变量传递到字符串函数中并获得一个月作为响应。 – Ronave4C
这里显示的结果: 平均高61.3 平均低40.7 高温度指数:6是78.2华氏度 低温指数为:0是23.7华氏度 我应该让地方indexLowTemp和indexHighTemp函数也返回一个字符串?或者它应该是一个单独的功能? – Ronave4C