![]() |
![]() |
![]() |
|||||
![]() |
![]() |
![]() |
![]() |
![]() |
|||
| Welcome
to Tech Support Forum home to more then 136,000 problems solved. Issues
have included: Spyware, Malware, Virus Issues, Windows, Microsoft,
Linux, Networking, Security, Hardware, and Gaming Getting your
problem solved is as easy as: 1. Registering for a free account 2. Asking your question 3. Receiving an answer Registered members: * See fewer ads. * And much more..
|
| Want to know how to post a question? click here | Having problems with spyware and pop-ups? First Steps |
|
|||||||
| Programming A discussion forum for programs and programming used in tech-related businesses. |
![]() |
|
|
LinkBack | Thread Tools |
|
|
#1 (permalink) |
|
Registered User
Join Date: Sep 2005
Posts: 1
OS: xP
|
hello, im new to the forum and i wanted to help with my c++ program.
the teacher wants us to design a progrm that would keep track of airplanes awaitin landing at an airport. the program will maintain a queue of flights numbers. the program will be abel 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 would be appreciated. thanks- Joyce |
|
|
|
| Important Information |
|
Join the #1 Tech Support Forum Today - It's Totally Free!
TechSupportForum.com is a leading support website for your computer needs. We offer free, friendly and personalized computer support. Why pay to have your computer fixed when you can do it for free. Join TechSupportforum.com Today - Click Here |
|
|
#2 (permalink) |
|
Registered User
Join Date: Sep 2004
Posts: 302
OS: Vista (on Laptop) WinXP Pro SP3 (on Desktop)
|
answer
Joyce
Although i feel your pain, I'm not in the habit of writing code. However, I will help you with some of the concepts. At a quick (and I mean quick) look, I see your 'addPlane' function checks to see if the 'queue' is full, if not, then adds the new plane to the end. That's fine, however, you will definetly want a function that updates the queue when you remove a plane. Maybe a removePlane(), that removes the first AND (this is important) shifts all the other planes behind it into the spot above them. You've got to keep in mind that the queue is always updating whenever something is added, or removed. If you do not do this, then you will keep adding planes, and eventually exceed your size, even if planes should have landed and exited the queue successfully. One way to do this is to have 2 pointers. One pointing to the beginning (aka the head) of the queue (so if you are using a static array, that's fine too) and one that points to the end (aka the tail) of the queue. So, I would have a static array of WHATEVER_SIZE declared, have a head pointer (type int) and a tail pointer (type int) so that I could reference the array's indecies easily. Every time a new plane comes in update the tail pointer (you're kinda doing that with the lsize (i just wouldn't use lsize as the name)). When you remove a plane, pop it off the list by updating the head pointer or shifting everything up one space. -------------------- | plane 1 | plane 2 | -------------------- | index 0 | index 1 | -------------------- |**tail**|**head*| -------------------- after plane 1 removed: -------------------- | plane 2 | ***** | -------------------- | index 0 | index 1 | -------------------- | tail/head|******| --------------------
__________________
AMD X2 5000+ Black w/ XFX GeForce 8200 MoBo 4GB OCZ DDR2 RAM 3/4 of a TB of data storage between 2 HDD's (no RAID) Last edited by ricer333; 09-14-2005 at 11:42 AM. |
|
|
|
|
|
#3 (permalink) |
|
TSF Enthusiast
Join Date: Dec 2004
Posts: 604
OS: windows xp
|
while ricer way would work but I guessing you in a first level c++ class and proberly not so familar with using pointers so I going to show a example with out using pointers. Here a program that does what you want that I wrote very quickly that should show you what you need to do and just uses basic array and function rules.
PHP Code:
PHP Code:
PHP Code:
PHP Code:
PHP Code:
PHP Code:
If you got any questions on how it work feel free to ask. I did it this way because I found it faster then playing around with your code. You can look at what I did to help you figure out how to get your code to work. If you really want to learn c++ it best you use my code to learn and fix your code and not just turn in my code to your teacher because you wont learn anything that way.
__________________
Last edited by mgoldb2; 09-18-2005 at 02:56 AM. |
|
|
|
![]() |
| Thread Tools | |
|
|