CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 4 of 4

Threaded View

  1. #1
    Join Date
    Sep 2012
    Posts
    10

    [RESOLVED] Help in Enqueue & Dequeue

    9/14/2012 - I've not used any of the suggestions made by the members of the forums. I decided to fix the current problem I had instead.

    Assignment
    Use your language’s native queue class to write the following program: create a class, Patient. The class has 2 members: name of type string; wait_time, a non-negative integer. Read definitions of patients from a file and add the patients to a queue. Write a loop that dequeues a patient from the queue and then decrement the patient’s wait_time. If the patient’s wait time is greater than 0, then the program enqueues the patient again. Otherwise it discards the patient. The loop continues until the queue is empty.

    I've worked the WHOLE day on this **** and it's not looking very good. It compiles and runs but after inputting stuff, the program stops responding. I'm not very good in data structures and my logic is so **** right now. Any from of help is appreciated.

    Header File
    Code:
    #include <string>
    
    class Patient
    {
        public:
            Patient();
            std::string name;
            int wait_time;
            bool empty() const;
        private:
            int count;
    
    
    };
    
    
    bool Patient::empty() const
    {
        //Post: Return true if the Queue is empty, otherwise return false.
        return count == 0;
    }
    Main File
    Code:
    #include <stack>
    #include "Patient.h"
    #include <iostream>
    using namespace std;
    
    
    Patient::Patient()
    {
        name = name;
        wait_time = 0;
        count = 0;
    }
    
    
    void serve(string waiting_list[], int dequeue_in[], int maxperson, int rounds)
    {
                int serve_entry = rounds-1;
                cout << "\n";
                dequeue_in[serve_entry] = dequeue_in[serve_entry] - 1;
                cout<< ">>P" << rounds <<" - "
                << waiting_list[serve_entry] << " : " << dequeue_in[serve_entry];
    
    
                int next_name = serve_entry+1;
                int next_wait = serve_entry+1;
    
    
                for (; next_name < maxperson; next_name++, next_wait++)
                {
                    cout<< "\n"<< "P" << next_name+1 <<" - "
                    << waiting_list[next_name] << " : " << dequeue_in[next_wait];
                }
                cout << "\n";
    }
    
    
    void append(string waiting_list[], int dequeue_in[], int maxperson, int rounds)
    {
                int append_entry = rounds - 1;
                for (; append_entry < maxperson; append_entry++)
                {
                    string temp;
                    temp = waiting_list[append_entry]; //Holds the value for a bit
                     for ( int i = 1; i < maxperson; i++)
                     {
                         waiting_list[i-1] = waiting_list[i];
                     }
                    waiting_list[maxperson-1] = temp;
                   // int to_back = maxperson - 1 - append_entry;
                   // cout<< "\n"<< "P" << to_back+1 <<" - "
                   // << waiting_list[to_back] << " : " << dequeue_in[to_back];
                }//maybe do a swap?
    }
    
    
    int main()
    {
        int total_patients;
        Patient patients;
    
    
        cout <<"How many patients total?   ";
        cin >> total_patients;
        cout << "\n";
    
    
        const int maxperson = total_patients; //Pass a varying variable to a constant like this.
        string waiting_list[maxperson]; //Arrays always need a [size].
        int dequeue_in[maxperson];
    
    
            for (int i = 1, j = 0; i <= total_patients; i++, j++)
            {
                cout << "Enter patient #"<< i << "'s name: ";
                cin >> patients.name;
                waiting_list[i-1] = patients.name;
    
    
                cout << "What is their wait time?   ";
                cin >> patients.wait_time;
                dequeue_in[j] = patients.wait_time;
            }
    
    
        int rounds = 0;
    
    
        for(int i=0;i < maxperson; i++)
        {
            rounds += dequeue_in[i];
        }
        cout << "Max rounds: " << rounds <<"\n\n";
    
    
       /* for(int i = 0, j= 0; i < total_patients; i++, j++)
        {
            if (i < total_patients - 1)
                cout<< waiting_list[i] << " : " << dequeue_in[j] << ", ";
            else
                cout<< waiting_list[i] << " : " << dequeue_in[j] << endl;
        }*/
    
    
        //Maybe put the round looping here instead.
        for (int i = 1; i <= rounds; i++)
        {
            cout<< "\n"<< "_______Round " << i << " Serve________" << endl; //Rounds depend on the person with the most wait_time.
            serve(waiting_list, dequeue_in, maxperson, i);
    
    
             cout<< "\n"<< "_______Round " << i << " Append________" << endl; //Rounds depend on the person with the most wait_time.
             append(waiting_list, dequeue_in, maxperson, i);
        }
    }
    Last edited by Lethargic; September 14th, 2012 at 04:31 AM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured