使用函数的第3个参数

时间:2015-10-07 23:02:44

标签: c++ arrays string function parameters

任何人都可以帮我弄清楚如何获取getLowest / getHighest函数的第3个参数来引用具有一年中几个月的names数组,并在我调用它时显示月份的名称?这些函数应该发生的事情是它们应该能够给出与数组中最低/最高量相对应的月份名称。我似乎无法理解它。这是我为此代码所需要的最后一件事,而且我正在努力解决这个问题。任何帮助将非常感激。谢谢。

#include <iostream>
#include <iomanip>
#include <string>
using namespace std;

//Function prototypes
double getTotal(double [], int);
double getAverage(double [], int);
double getLowest(double [], int, int&);
double getHighest(double [], int, int&);

int main()
{
    const int months = 12;
    string names[months] = { "January", "February", "March", "April",
        "May", "June", "July", "August",
        "September", "October", "November", "December" };
    double rainfall[months];
    double total, average, maxRain, minRain;
    int indexofLowest, indexofHighest;

    //Input from using for the rainfall amounts
    std::cout << "Please enter the amount of rainfall in inches, that fell in each month.\n";
    std::cout << "Enter the amount of rainfall for " << names[0];
    std::cin >> rainfall[0];
    std::cout << "Enter the amount of rainfall for " << names[1];
    std::cin >> rainfall[1];
    std::cout << "Enter the amount of rainfall for " << names[2];
    std::cin >> rainfall[2];
    std::cout << "Enter the amount of rainfall for " << names[3];
    std::cin >> rainfall[3];
    std::cout << "Enter the amount of rainfall for " << names[4];
    std::cin >> rainfall[4];
    std::cout << "Enter the amount of rainfall for " << names[5];
    std::cin >> rainfall[5];
    std::cout << "Enter the amount of rainfall for " << names[6];
    std::cin >> rainfall[6];
    std::cout << "Enter the amount of rainfall for " << names[7];
    std::cin >> rainfall[7];
    std::cout << "Enter the amount of rainfall for " << names[8];
    std::cin >> rainfall[8];
    std::cout << "Enter the amount of rainfall for " << names[9];
    std::cin >> rainfall[9];
    std::cout << "Enter the amount of rainfall for " << names[10];
    std::cin >> rainfall[10];
    std::cout << "Enter the amount of rainfall for " << names[11];
    std::cin >> rainfall[11];

    //Get total
    total = getTotal(rainfall, months);

    //Get average
    average = getAverage(rainfall, months);

    //Get the max amount of rain
    maxRain = getHighest(rainfall, months, indexofHighest);

    //Get the min amount of rain
    minRain = getLowest(rainfall, months, indexofLowest);

    //Display the total, average, highest/lowest
    std::cout << "The total amount of rain for the year is " << total << " inches.\n";
    std::cout << "The average amount of rain monthly is " << average << " inches per month.\n";
    std::cout << "The month that had the highest amount of rainfall is " << names[indexofHighest] << " with " << maxRain << " inches.\n";
    std::cout << "The month that has the lowest amount of rainfall is " << names[indexofLowest] << " with " << minRain << " inches.\n";
    return 0;

}

//Definition of function getTotal
double getTotal(double rainfall[], int months)
{
    double total = 0;
    for (int count = 0; count < months; count++)
    {
        total += rainfall[count];
    }
    return total;
}

//Definition of function getAverage
double getAverage(double rainfall[], int months)
{
    double total = 0;
    double average = 0.0;
    for (int count = 0; count < months; count++)
    {
        total += rainfall[count];
        average = total / months;
    }
    return average;
}

//Defintion of function getLowest
double getLowest(double rainfall[], int months, int indexofLowest)
{

    int count;
    double lowest;

    lowest = rainfall[0];
    for (count = 1; count < months; count++)
    {
        if (rainfall[count] < lowest)
            lowest = rainfall[count];
    }
    return lowest;
}

//Definition of function getHighest
double getHighest(double rainfall[], int months, int indexofHighest)
{
    int count;
    double highest;

    highest = rainfall[0];
    for (count = 1; count < months; count++)
    {
        if (rainfall[0] > highest)
            highest = rainfall[count];
    }
    return highest;
}

2 个答案:

答案 0 :(得分:0)

我尝试了你的代码。你有一些错误。我想你将来需要更加努力。无论如何,这是一个有效的解决方案,对现有代码的改动很小 -

//Defintion of function getLowest                                                                                               
double getLowest(double rainfall[], int months, int & indexofLowest)
{
    int count;
    double lowest;

    lowest = rainfall[0];
    for (count = 1; count < months; count++)
    {
        if (rainfall[count] < lowest)
        {
                        lowest = rainfall[count];
                        indexofLowest = count;
        }
    }

return lowest;
}

//Definition of function getHighest
double getHighest(double rainfall[], int months, int & indexofHighest)
{
    int count;
    double highest;

    highest = rainfall[0];
    for (count = 1; count < months; count++)
    {
                if (rainfall[count] > highest)
                {       
                        highest = rainfall[count];
                        indexofHighest = count;
                }
    }
    return highest;
}

答案 1 :(得分:0)

您必须在函数中设置indexofLowestindexofHighest(并匹配原型):

//Defintion of function getLowest
double getLowest(double rainfall[], int months, int& indexofLowest)

int count;
double lowest;

lowest = rainfall[0];
for (count = 1; count < months; count++)
{
    if (rainfall[count] < lowest) {
    lowest = rainfall[count];
    indexofLowest = count;
    }
}
return lowest;
}

//Definition of function getHighest
double getHighest(double rainfall[], int months, int& indexofHighest)
{
int count;
double highest;

highest = rainfall[0];
for (count = 1; count < months; count++)
{
    if (rainfall[count] > highest) { //there was a bug here in your code: ... rainfall[0]
        highest = rainfall[count];
        indexofHeighest = count;
    }
}
return highest;
}

您还可以使用函数输入数据(并可能添加一些错误检查):

//Input from using for the rainfall amounts
int readData(string monthNames[], double rain[], int n) {
    int i;
    std::cout << "Please enter the amount of rainfall in inches, that fell in each month.\n";
    for ( i=0; i<n; i++) {
        std::cout << "Enter the amount of rainfall for " << monthNames[i];
        std::cin >> rain[i]; //check this value somehow!
    }
    return i;   
 }