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
Main FileCode:#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; }
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); } }


Reply With Quote
Bookmarks