Write a program using class template to sort two lists of numbers, one integer list and another floating point list.
Sep 23, 2018Program source code:
#include<iostream> using namespace std; // template program to sort numvers // using class, sorts in ascending order template class Array { // here we use pointer to make dynamic // array to initialize private: T *arrayp; int SIZE; public: Array(int si){ SIZE = si; arrayp = new T[SIZE]; } void read_elements(){ for (int i = 0; i < SIZE; i++) { cin>>*(arrayp + i); } } void sort(){ for (int i = 0; i < SIZE; i++) { for (int j = i+1; j < SIZE; j++) { if (*(arrayp + i) > *(arrayp + j)) { T temp; temp = *(arrayp + i); *(arrayp + i) = *(arrayp + j); *(arrayp + j) = temp; } } } } void display(){ for (int i = 0; i < SIZE; i++) { cout<<*(arrayp + i)<<", "; } cout<<endl; } // lets create destructor to deallocate ~Array(){ delete [] arrayp; } }; int main(){ int int_size, float_size; cout<<"Enter array size of integer array:"<<endl; cin>>int_size; cout<<"Enter array size of floating array:"<<endl; cin>>float_size; Array int_array(int_size); Array float_array(float_size); cout<<"Enter Integer array:"<<endl; int_array.read_elements(); cout<<"Enter Floating array:"<<endl; float_array.read_elements(); cout<<"Before sorting they are :"<<endl; int_array.display(); float_array.display(); int_array.sort(); float_array.sort(); cout<<"After sorting they are :"<<endl; int_array.display(); float_array.display(); return 0; }
Sample Run:
Enter array size of integer array: 8 Enter array size of floating array: 10 Enter Integer array: 1 2 3 9 5 4 6 7 Enter Floating array: 34.6464 4545.545 7766.6456 46546.656 5656.656 232.3434 989898.657567 5676.575 456.5656 44.444 Before sorting they are : 1, 2, 3, 9, 5, 4, 6, 7, 34.6464, 4545.54, 7766.65, 46546.7, 5656.66, 232.343, 989899, 5676.58, 456.566, 44.444, After sorting they are : 1, 2, 3, 4, 5, 6, 7, 9, 34.6464, 44.444, 232.343, 456.566, 4545.54, 5656.66, 5676.58, 7766.65, 46546.7, 989899,
Note: for sorting using function template please refer another post