c++ array help

Discussion in 'C++' started by aemazing@gmail.com, Sep 14, 2005.

  1. Guest

    i've been tryin to do the following -
    -Add a new flight number to the end of the queue (got it done)
    -LAnd the plane at the front of the queue - problems wit it-
    -display the queue - got it done
    -seach for a specific flight number in queue ( didn't get there yet)
    -move a flight number one one position in the queue to another ( didn't
    get there yet)

    this is what i have so far. it runs but something is wrong and i don't
    know what it is.

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

    const int MAXQUEUE = 100 ; // maximum number of flights in the queue

    void displayQueue (int[], int) ;
    void getChoice ();
    void addPlane (int[], int&) ;
    int checkPlane (int[], int, int) ;

    int main ()
    {
    int queue[MAXQUEUE] ; // array of incoming flight numbers
    int qsize = 0 ; // number of flights in the queue
    char choice; // user's choice of next operation

    do
    { // start menu loop
    displayQueue (queue, qsize) ;
    getChoice();
    switch (choice)
    { // start switch
    case 'S' : cout << "under construction" << endl; break ;
    case 'L' : cout << "under construction" << endl; break ;
    case 'A' : addPlane (queue, qsize) ; break ;
    case 'M' : cout << "under construction" << endl; break ;
    case 'Q' : cout << "program ended" << endl ;
    } // end switch
    } while (choice != 'Q'); // end menu loop

    return 1 ;
    }

    //============displayQueue=====================
    // task - display the position and flight number of each flight in the
    array
    // pre - given an array of flight numbers and number of flights in the
    array
    // post - nothing

    void displayQueue (int list[], int lsize)
    { // start function
    int w ;
    cout << endl << endl << endl ;
    if (lsize == 0)
    cout << "no flights awaiting landing at this time" << endl ;
    else
    { // start listing
    cout << "Queue size = " << lsize << endl << endl ;
    cout << "Position Flight#" << endl ;
    for (w = 0; w < lsize; w++)
    cout << setw(5) << w + 1 << setw(12) << list[w] << endl ;
    } // end listing
    } // end function

    //============getChoice========================
    // task - obtain a choice code from the user
    // pre - nothing
    // post - a valid, uppercase code is returned

    void getChoice()
    { // start function
    char holdCode;
    char pick;


    if(pick == holdCode)
    {
    cout << endl << " to search for a flight number, enter S" ;
    cout << endl << " to add a flight to the queue, enter A" ;
    cout << endl << " to land the next flight, enter L" ;
    cout << endl << " to move a flight in the queue, enter M" ;
    cout << endl << " to quit the program, enter Q" ;
    cout << endl << " enter your choice " ;
    cin >> holdCode ;
    }
    else
    {
    cout << " not a valid choice "<<endl;
    }
    holdCode = toupper(holdCode) ; // convert to upper case
    } // end function


    //======================addPlane==================== =======
    // task - add a new flight to the queue
    // pre - given an array of flight numbers and number of flights in
    array
    // post - size of array is increased, new flight number added to end

    void addPlane (int list[], int& lsize)
    { // start function
    int newFlight ; // flight number to be added to queue
    int w;
    char pause ;
    cout << endl << "Enter flight number to add : " ;
    cin >> newFlight;



    if (lsize == MAXQUEUE)
    { // start queue is full
    cout << endl << "EMERGENCY! queue is full, cannot add flight" <<
    newFlight ;
    cout << endl << "press any key to continue" ;
    cin.get(pause) ;
    return ;
    } // end queue is full
    //list[lsize] = newFlight ; // add flight to end of list
    lsize++ ; // increase list size

    for (w = 0; w < lsize; w++)
    if (newFlight == list[w])
    return ;
    } // end function


    //=====================checkPlane=================== ==========
    // task - search the list of flights for a given flight number
    // pre - given an array of flight numbers, number in array, and target
    flight
    // post - return queue position if target is found in array, else
    return -1

    int checkPlane (int list[], int lsize, int target)
    { // start function
    int w ;
    for (w = 0; w < lsize; w++)
    if (target == list[w])
    return w + 1;
    return -1 ;
    } // end function




    any help or pointers would be very appreciated. thanks-

    Joyce
     
    , Sep 14, 2005
    #1
    1. Advertising

  2. wrote:
    > i've been tryin to do the following -
    > -Add a new flight number to the end of the queue (got it done)
    > -LAnd the plane at the front of the queue - problems wit it-
    > -display the queue - got it done
    > -seach for a specific flight number in queue ( didn't get there yet)
    > -move a flight number one one position in the queue to another ( didn't
    > get there yet)
    >
    > this is what i have so far. it runs but something is wrong and i don't
    > know what it is.


    The code is pretty good for what I presume is your first program. There
    is quite a lot that could be improved but you'll learn about that as you
    get more experienced.

    Some miscellaneous comments follow.

    >
    > #include <iostream>
    > #include <iomanip>
    > using namespace std ;
    >
    > const int MAXQUEUE = 100 ; // maximum number of flights in the queue
    >
    > void displayQueue (int[], int) ;
    > void getChoice ();


    getChoice should return the choice (a char) to the main program, so the
    above should be

    char getChoice ();

    > void addPlane (int[], int&) ;
    > int checkPlane (int[], int, int) ;
    >
    > int main ()
    > {
    > int queue[MAXQUEUE] ; // array of incoming flight numbers
    > int qsize = 0 ; // number of flights in the queue
    > char choice; // user's choice of next operation
    >
    > do
    > { // start menu loop
    > displayQueue (queue, qsize) ;
    > getChoice();


    You use the variable choice for the user choice but you never assign to
    it. Should be

    choice = getChoice();

    I guess the concept of a function return value is not something you've
    fully grasped yet.

    > switch (choice)
    > { // start switch
    > case 'S' : cout << "under construction" << endl; break ;
    > case 'L' : cout << "under construction" << endl; break ;
    > case 'A' : addPlane (queue, qsize) ; break ;
    > case 'M' : cout << "under construction" << endl; break ;
    > case 'Q' : cout << "program ended" << endl ;
    > } // end switch
    > } while (choice != 'Q'); // end menu loop
    >
    > return 1 ;
    > }
    >
    > //============displayQueue=====================
    > // task - display the position and flight number of each flight in the
    > array
    > // pre - given an array of flight numbers and number of flights in the
    > array
    > // post - nothing
    >
    > void displayQueue (int list[], int lsize)
    > { // start function
    > int w ;
    > cout << endl << endl << endl ;
    > if (lsize == 0)
    > cout << "no flights awaiting landing at this time" << endl ;
    > else
    > { // start listing
    > cout << "Queue size = " << lsize << endl << endl ;
    > cout << "Position Flight#" << endl ;
    > for (w = 0; w < lsize; w++)
    > cout << setw(5) << w + 1 << setw(12) << list[w] << endl ;
    > } // end listing
    > } // end function


    The above looks fine

    >
    > //============getChoice========================
    > // task - obtain a choice code from the user
    > // pre - nothing
    > // post - a valid, uppercase code is returned


    The comment is right, pity it doesn't reflect the code. This is a
    serious problem is programming, it's very easy to kid yourself that a
    piece of code does what you thought you wrote, not what you actually wrote.

    >
    > void getChoice()


    char getChoice()

    > { // start function
    > char holdCode;
    > char pick;
    >
    >
    > if(pick == holdCode)
    > {
    > cout << endl << " to search for a flight number, enter S" ;
    > cout << endl << " to add a flight to the queue, enter A" ;
    > cout << endl << " to land the next flight, enter L" ;
    > cout << endl << " to move a flight in the queue, enter M" ;
    > cout << endl << " to quit the program, enter Q" ;
    > cout << endl << " enter your choice " ;
    > cin >> holdCode ;
    > }
    > else
    > {
    > cout << " not a valid choice "<<endl;
    > }
    > holdCode = toupper(holdCode) ; // convert to upper case
    > } // end function


    HUH??. I don't understand this pick and holdCode business at all. If you
    look at pick in the above code is never gets assigned to at all. It is
    an uninitialised variable and its value could be absolutely anything.

    If you want to deal with bad choices you need a loop, get one input,
    test if it is valid and loop round if it isn't, And dont forget the
    function must return the choice made.

    Some thing like this (this is pseudo code, you fill in the details)

    char getChoice()
    {
    char code;
    for (;;)
    {
    display choices to user
    cin >> code;
    if (valid code)
    break;
    cout << "not a valid choice\n";
    }
    return code; // don't forget this part!!
    }

    >
    >
    > //======================addPlane==================== =======
    > // task - add a new flight to the queue
    > // pre - given an array of flight numbers and number of flights in
    > array
    > // post - size of array is increased, new flight number added to end
    >
    > void addPlane (int list[], int& lsize)
    > { // start function
    > int newFlight ; // flight number to be added to queue
    > int w;
    > char pause ;
    > cout << endl << "Enter flight number to add : " ;
    > cin >> newFlight;
    >
    >
    >
    > if (lsize == MAXQUEUE)
    > { // start queue is full
    > cout << endl << "EMERGENCY! queue is full, cannot add flight" <<
    > newFlight ;
    > cout << endl << "press any key to continue" ;
    > cin.get(pause) ;
    > return ;
    > } // end queue is full
    > //list[lsize] = newFlight ; // add flight to end of list


    Why have you commented the above line out? It looks correct to me.

    > lsize++ ; // increase list size
    >
    > for (w = 0; w < lsize; w++)
    > if (newFlight == list[w])
    > return ;


    I don't understand what the above is doing (actually it is doing
    nothing, but maybe it is work in progress).

    > } // end function
    >
    >
    > //=====================checkPlane=================== ==========
    > // task - search the list of flights for a given flight number
    > // pre - given an array of flight numbers, number in array, and target
    > flight
    > // post - return queue position if target is found in array, else
    > return -1
    >
    > int checkPlane (int list[], int lsize, int target)
    > { // start function
    > int w ;
    > for (w = 0; w < lsize; w++)
    > if (target == list[w])
    > return w + 1;
    > return -1 ;
    > } // end function
    >


    Above looks fine, except why return w + 1, why not w? w is the position
    in the array of the plane, and -1 means not found, that works, no need
    for w + 1.

    >
    >
    >
    > any help or pointers would be very appreciated. thanks-
    >
    > Joyce
    >


    As I said before code seems pretty good. You got to get familiar with
    returning values from functions, and you seriously messed up the
    getChoice fucntion but apart from that, very good.

    john
     
    John Harrison, Sep 14, 2005
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    4
    Views:
    13,530
    Old Wolf
    Aug 13, 2004
  2. Eric Boutin
    Replies:
    7
    Views:
    465
  3. Mara Guida

    const and array of array (of array ...)

    Mara Guida, Sep 2, 2009, in forum: C Programming
    Replies:
    3
    Views:
    521
    David RF
    Sep 3, 2009
  4. Tom
    Replies:
    3
    Views:
    234
    salsablr
    Dec 20, 2004
  5. Tuan  Bui
    Replies:
    14
    Views:
    524
    it_says_BALLS_on_your forehead
    Jul 29, 2005
Loading...

Share This Page