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