# Thread: why this program doesn't work!!

1. ## why this program doesn't work!!

Hi

I will be appreciated you if you help me to find the problem

the question is
Write a program that reads in the average monthly rainfall for a city for each month of the year and then reads in the actual monthly rainfall for each of the previous 12 months. The program then prints out a nicely formatted table showing the rainfall for each of the previous 12 months as well as how much above or below average the rainfall was for each month. The average monthly rainfall is given for the months January, February, and so forth, in order. To obtain the actual rainfall for the previous 12 months, the program first asks what the current month is and then asks for the rainfall figures for the previous 12 months. The output should correctly label the months.

and here are the codes

Code:
```#include <iostream.h>
#include <iomanip.h>
void printMonth(int month);
// PRECONDITION: month holds an integer 1-12
// POSTCONDITION: the corresponding month (Jan, Feb, ..., Dec) has been printed to the standard output.
int main()
{
double rainfall[12];          //this year's rainfall for each month
double averages[12];          //average rainfalls for each month
int currentMonth;             //what month is it? 1-based

// Get the average rainfall for each month, Jan-Dec
cout << "Please enter average rainfall for each month" << endl;
for (int i = 0; i < 12; i++) {
printMonth(i);
cout << ": ";
cin >> averages[i];
}

// Get the actual rainfall for the previous year; first have to ask what month it is to know what month to start with.
cout << "What is the number of the current month? Jan=1, Feb=2, etc." << endl;
cin >> currentMonth;
cout << "Please enter the rainfall for each month in the previous year" << endl;

int count = 0;
for (int month = currentMonth - 1; count < 12;
month = (month + 1), count++) {
printMonth(month);
cout << ": ";
cin >> rainfall[month];
}

// Print table showing avgs, actual rainfalls, and deviations from avg for previous 12 months.
//!! OOPS!!!! - nested function
void print_month(std::string name, double rainfall, double averages,
int currentMonth) {
std::cout.setf(std::ios_base::left);
std::
cout << setw(20) << name << setw(20) << rainfall << setw(20) <<
averages << setw(20) << currentMonth std::endl;
}

}

void printMonth(int month)
{
cout.width(8);
switch (month) {
case 0:
cout << "Jan";
break;
case 1:
cout << "Feb";
break;
case 2:
cout << "March";
break;
case 3:
cout << "April";
break;
case 4:
cout << "May";
break;
case 5:
cout << "June";
break;
case 6:
cout << "July";
break;
case 7:
cout << "Aug";
break;
case 8:
cout << "Sept";
break;
case 9:
cout << "Oct";
break;
case 10:
cout << "Nov";
break;
case 11:
cout << "Dec";
break;
}
}                               // End of Question #1```

2. What compiler are you using? What error messages are you getting when you compile this code? Please ask specific questions based on the posted code.

Jim

3. i dont have the c++ program so i am using this site http://codepad.org

and this site says

in the output window
1-
In function 'int main()':
2-Line 32
: error: a function-definition is not allowed here before '{' token
3-
compilation terminated due to -Wfatal-errors.

4. I recommend that you get an actual compiler, there are quite a few available free.

You can not implement a function within a function. You are trying to implement your function print_month() inside your function main().

Jim