Thread: why this program doesn't work!!

  1. #1
    Registered User
    Join Date
    Dec 2011
    Posts
    2

    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
    Last edited by Salem; 12-29-2011 at 11:21 AM. Reason: useless tags removed, code indented (one time only - improve your posts)

  2. #2
    Registered User
    Join Date
    May 2010
    Posts
    4,632
    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. #3
    Registered User
    Join Date
    Dec 2011
    Posts
    2
    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. #4
    Registered User
    Join Date
    May 2010
    Posts
    4,632
    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

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. A parliament program which doesn't work.
    By Figen in forum C Programming
    Replies: 9
    Last Post: 01-26-2011, 09:46 AM
  2. Why doesn't this c program work?
    By hobolux in forum C Programming
    Replies: 16
    Last Post: 01-17-2011, 02:05 PM
  3. Encryption program.... just doesn't work.
    By w00tw00tkab00t in forum C Programming
    Replies: 10
    Last Post: 12-28-2005, 04:38 PM
  4. My first program and it doesn't work.
    By Magneto in forum C++ Programming
    Replies: 16
    Last Post: 07-16-2005, 02:13 PM
  5. Program doesn't work as it should.
    By Cris987 in forum C++ Programming
    Replies: 9
    Last Post: 12-27-2003, 01:06 PM