Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct Activity
- {
- string name;
- double startingTime;
- double endingTime;
- };
- void showActivities(Activity*, int, string);
- void takeActivityDetails(Activity*, int);
- void sortByEndingTime(Activity*, int);
- int selectActivities(Activity*, Activity*, int);
- int main(void)
- {
- cout << "How many activities? No: ";
- int size; cin >> size;
- Activity* activities = new Activity[size];
- takeActivityDetails(activities, size);
- showActivities(activities, size, "Given");
- Activity* selected = new Activity[size];
- int total = selectActivities(activities, selected, size);
- // cout << "\nTotal: " << total << endl;
- showActivities(selected, total, "Selected");
- return 0;
- }
- void showActivities(Activity* arr, int n, string type)
- {
- cout << endl << type << " activities:\n";
- for ( int i = 0; i < n; ++i )
- {
- cout << "-> " << arr[i].name << " " << arr[i].startingTime << " "
- << arr[i].endingTime << endl;
- }
- }
- void takeActivityDetails(Activity* arr, int n)
- {
- for ( int i = 0; i < n; ++i )
- {
- cout << "\nActivity " << (i + 1) << ":" << endl;
- cout << "Name: "; cin >> arr[i].name;
- cout << "Start-time: "; cin >> arr[i].startingTime;
- cout << "End-time: "; cin >> arr[i].endingTime;
- }
- }
- void sortByEndingTime(Activity* arr, int n)
- {
- for (int i = 1; i <= n - 1; i++) {
- int LOC = i;
- Activity VAL = arr[LOC];
- while (LOC > 0 && arr[LOC - 1].endingTime > VAL.endingTime) {
- arr[LOC] = arr[LOC - 1];
- LOC--;
- }
- arr[LOC] = VAL;
- }
- }
- int selectActivities(Activity* activities, Activity* selected, int size)
- {
- int i = 0, j = 1, count = 1;
- selected[0] = activities[0];
- while ( j <= size )
- {
- if ( activities[i].endingTime <= activities[j].startingTime )
- {
- selected[count++] = activities[j];
- i = j;
- }
- j++;
- }
- return count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement