簡體   English   中英

使用函數的第三個參數

[英]Using the 3rd parameter of a function

誰能幫我弄清楚如何獲取getLowest / getHighest函數的第三個參數,以引用具有一年中月份的名稱數組,並在需要時顯示月份名稱? 這些函數應該發生的事情是,它們應該能夠給出與數組中最低/最高金額相對應的月份名稱。 我似乎無法把它記下來。 這是我需要這段代碼的最后一件事,我正在盡力弄清楚。 任何幫助將非常感激。 謝謝。

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

我嘗試了您的代碼。 您有一些錯誤。 我想您將來需要加倍努力。 無論如何,這里是一個可行的解決方案,只需對現有代碼進行最少的更改-

//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;
}

您必須在函數中設置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;   
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM