#include "wrapper.h" #include "sminst.h" //------------------------------------------------------------------- void Display_Country_Data (preserves Country_Record& data) // pre: true // post: displays country_name and population_in_2001 data members on one line // of the console, surrounded by parens and separated // by a comma { std::cout << "(" << data->country_name << ", " << data->population_in_2001 << ")" << std::endl; } // Display_Country_Data //------------------------------------------------------------------- void Do_Load (produces Record_Queue& q1) // pre: true // post: q1 holds all country data found in file entered in by user // if the filename entered exists { object File data; object Boolean successful; object Text data_filename; object Integer i, size; object Country_Record country_data; // Get filename from user and open std::cout << "Enter filename: "; std::cin >> data_filename; data.Open_File (data_filename, File::read, successful); if (successful) { q1.Clear (); // Read data from file data.Read (size, successful); for (i = 0; i < size; i++) { data.Read (country_data->country_name, successful); data.Read (country_data->population_in_2001, successful); q1.Enqueue (country_data); } // end for } else { std::cout << "Error: " << data_filename << " not found" << std::endl; } // end if } // Do_Load //------------------------------------------------------------------- void Do_Display (preserves Record_Queue& q) // pre: true // post: data in s displayed on console, 22 records at at time { object Integer p, cnt, z; object Text x; object Country_Record r; z = q.Size (); cnt = 1; for (p = 0; p < z; p++) { q.Dequeue (r); std::cout << "Record #" << cnt << " "; Display_Country_Data (r); q.Enqueue (r); // Display 22 records at a time if ((cnt % 22) == 0) { std::cout << "Hit Enter To Continue"; std::cin >> x; } // end if cnt++; } // end for } // Do_Display //------------------------------------------------------------------- void Do_Sort (preserves Record_Queue& q) // pre: true // post: q = permutation(#q) and q is in sorted order { object Integer p, z; object Record_Sorter sorter; object Country_Record r; // Move data from queue object to sorting machine object z = q.Size (); for (p = 0; p < z; p++) { q.Dequeue (r); sorter.Insert (r); } // end for sorter.Change_To_Extraction_Phase (); // Move sorted data back into the queue object z = sorter.Size (); for (p = 0; p < z; p++) { sorter.Extract (r); q.Enqueue (r); } // end for } // Do_Sort //------------------------------------------------------------------- void main (void) { // data_set is used to hold all the data object Record_Queue data_set; Do_Load (data_set); std::cout << std::endl << "Unsorted country data:" << std::endl; Do_Display (data_set); Do_Sort (data_set); std::cout << std::endl << "Country data sorted by name descending:" << std::endl; Do_Display (data_set); } // main