functions and arrays assistance please

The function char findMonth(int) is supposed to return the month
that corresponds to the number entered by the user.

The int lowestRainfall () function is supposed to return the month with the lowest rainfall.

These are the errors I get when i compile

rainfalls.cpp: In function `char findMonth(int)':
rainfalls.cpp:63: error: declaration of 'char months[12][10]' shadows a parameter
rainfalls.cpp: In function `int lowestRainfall(int (*)[2])':
rainfalls.cpp:78: error: `sum' undeclared (first use this function)
rainfalls.cpp:78: error: (Each undeclared identifier is reported only once for each function it appears in.)
rainfalls.cpp:79: error: `months' undeclared (first use this function)
rainfalls.cpp:79: error: `monthNum' undeclared (first use this function)
rainfalls.cpp:83: error: expected `}' at end of input

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

#include <iostream>

using namespace std;

void getData(int rainfall[12][2]);
int averageHigh(int rainfall[12][2]);
int averageLow(int rainfall[12][2]);
char findMonth(int months);
int main()
{
    int rainfall[12][2];
    char months[12][10]={"January","February","March","April","May","June","July","August","September","October","November","December"};
    int monthNum;

    getData(rainfall);
    averageHigh(rainfall);
    averageLow(rainfall);
    findMonth(monthNum);

    return 0;

}
void getData(int rainfall[12][2])
{
    for (int i = 0; i < 12; i++)
    {
                cout << "Please enter the highest and lowest amount of rainfall for the month." << endl;
                cin >> rainfall[i][0] >> rainfall[i][1];
    }
}

int averageHigh(int rainfall[12][2])
{
                double sum=0;
                double average=0;
                 for(int a=0;a<12;a++)

        {
                sum+=rainfall[a][0];
        }
                average=sum/12.0;
                cout<<"Average high is- "<<average<<endl;



}
int averageLow(int rainfall[12][2])
{
                double sum=0;
                double average=0;
                for(int a=0;a<12;a++)

        {
                sum+=rainfall[a][1];
        }
                average=sum/12.0;
                cout<<"Average low is- "<<average<<endl;
}
char findMonth(int months)
{
                int monthNum;

                char months[12][10]={"January","February","March","April","May","June","July","August","September","October","November","December"};

                cout<<"Please enter the number of the month"<<endl;
                cin>>monthNum;

                cout<<months[monthNum][10];
}

int lowestRainfall(int rainfall[12][2])
{
           int low;

                 for(int a=0;a<12;a++)

        {
                sum+=rainfall[a][1];
                months[monthNum][10];


        }
                cout<<"The month with the lowest rainfall is "<<low<<endl;

All your functions should have a return value if you plan on returning something. If your not returning data just make your functions void.

You also have forgotten a } at the lowestRainfall function.
The real problem is that you are trying to use char arrays to represent strings. The is what's done in C, but in C++ you can do better as there is a string object in the standard library.

You appear to be using month names throught the program, but they're always the same. It may be better to have a single read-only array of months:
1
2
3
4
5
6
7
8
9
10
11
12
13
const std::string global_months[] =
{ "January",
  "February",
  "March",
  "April",
  "May",
  "June",
  "July",
  "August",
  "September",
  "October",
  "November",
  "December"};


If you take the prompt out of the lookup functions, they become much simpler, and findMonth becomes:
1
2
3
4
std::string findMonth(int month)  // range 1 - 12
{
    return global_months[month - 1];
}


And you'd use it as:
1
2
3
4
5
6
7
    int monthNum = 0;
    std::cout << "Please enter the number of the month." << std::endl;
    std::cin >> monthNum;
    if (1 <= monthNum && monthNum <= 12)
    {
        std::cout << findMonth(monthNum) << std::endl;
    }
Topic archived. No new replies allowed.