Code:#include <iostream> using namespace std; class CD { public: static const int num = 100; char publisher[num], title[num], location[num]; int year; public: void virtual input()=0; void virtual output()=0; }; class Classical: public CD { protected: static const int num = 100; char composer[num], conductor[num]; public: void virtual input()=0; void virtual output()=0; }; class Popular: public CD { private: static const int num=100; char name_of_the_band[num], composer[num], leading_performer[num]; public: void input() { cout << "\nPublisher : "; cin >> publisher; cout << "Title : "; cin >> title; cout << "Location : "; cin >> location; cout << "Year : "; cin >> year; cout << "Name of the band : "; cin >> name_of_the_band; cout << "Composer : "; cin >> composer; cout << "Leading performer: "; cin >> leading_performer; } void output() { cout << "\nPublisher : " << publisher; cout << "\nTitle : " << title; cout << "\nLocation : " << location; cout << "\nYear : " << year; cout << "\nName of the band : " << name_of_the_band; cout << "\nComposer : " << composer; cout << "\nLeading performer : " << leading_performer; } }; class Symphony: public Classical { private: static const int num=100; char orchestra[num], location[num]; public: void input(){ cout << "\nPublisher: "; cin >> publisher; cout << "Title : "; cin >> title; cout << "Location : "; cin >> location; cout << "Year : "; cin >> year; cout << "Composer : "; cin >> composer; cout << "Conductor: "; cin >> conductor; cout << "Orchestra: "; cin >> orchestra; cout << "Location : "; cin >> location;} void output() { cout << "\nPublisher :" << publisher; cout << "\nTitle :" << title; cout << "\nLocation :" << location; cout << "\nYear :" << year; cout << "\nComposer :" << composer; cout << "\nConductor :" << conductor; cout << "\nOrchestra :" << orchestra; cout << "\nLocation :" << location;}}; void ShellSort(CD *arr[],int n); //function prototype for our Shell sort algorithm void main() { CD *cdptr[100]; //pointer declaration for each of our class Popular *popptr; Symphony *symptr; int n=0, choose, symphonyCD, popularCD, pop; char terminate; cout << "\t\tEnter 2 or more CD-s to sort!" << endl; do // do-while statement which allows the user to enter data and terminate the program when he wants { cout << "\n1.Classical"; cout << "\n2.Popular"; cout << "\n3.Sort"; cout << "\n4.Display"; cout << "\n5.Terminate program"; cout << endl << endl; cout << "\nChoose category: "; cin>>choose; switch(choose) //switch for the user to choose the type of input { case 1: cout << "\nChoose category: "; cout << "\n1.Symphony"; cout << endl << endl; cin >> pop; if(pop==1) //if-else statement to chose the type of classical CD { cout << "\nEnter number of symphony cd: "; cin >> symphonyCD; int static b; for(int i=0; i<symphonyCD;i++) { cout << "\nNr. " << ++b << endl; symptr = new Symphony; symptr->input(); cdptr[n++]=symptr; } } else cout << "\nNot recognized value!"; break; case 2: cout << "\nEnter number of popular cd: "; cin >> popularCD; int static a; for(int i=0; i<popularCD;i++) { cout << "\nNr. " << ++a << endl; popptr = new Popular; popptr->input(); cdptr[n++]=popptr; } break; case 3: ShellSort(cdptr,100); //function call statement for our Shell Sort algorithm break; case 4: if(n==0) cout << "\nNo data entered!" << endl; for(int i=0; i<n;i++) { cdptr[i]->output(); cout << endl; } break; case 5: cout << "\nDo you want to terminate the program? (y/n)"; cin >> terminate; break; default: cout << "\nNot recognized value!" << endl; } }while(terminate!='y'); system("pause"); } void ShellSort(CD *arr[],int n) { int i,j,increment; CD *temp; for(increment=n/2; increment>0; increment /= 2) { for(i=increment; i<n; i++) { temp=arr[i]; for(j=i; j>=increment; j -= increment) { if(temp->title < arr[j-increment]->title) { arr[j] = arr[j-increment]; } else break;} arr[j] = temp;}}}


Reply With Quote
Bookmarks