# Chapter 14 Exercise Set 1¶

1. Add the `Deck` object developed in this chapter to the `Cards.h` and `Cards.cpp` files you created in Chapter 13 Exercise Set 1.

2. Rewrite the `find_card` function from Searching as a `Deck` member function that has a `Card` parameter.

3. Reread the discussion in Random numbers and use that to write a function named `random_between`. Create a header file, `random.h`, with the following:

```// Returns positive pseudorandom integer between l and h inclusive
int random_between(int l, int h);
```

Then create a `random.cpp` that has the body of the function. The parameters `l` and `h` represent the lower and upper ends of a range or integers. Your function should return random integers between `l` and `h` inclusive. Note: Your function should not concern itself with the need to seed `rand` by calling `srand`. Call `srand` in the `main` function.

Write a `test_random.cpp` that has `#include "random.h"` at the top and has several calls to `random_between` in its `main` function designed to test it. Try simulating the roll of a 6 sided die. Don’t forget to call `srand` so that you get a different sequence of numbers each time you run your program.

Handle the case where `l` is greater than `h` by swapping `l` and `h` so that both `random_between(3, 6)` and `random_between(6, 3)` return an integer between 3 and 6 inclusive.

4. Add a modifier member function to the `Deck` structure named `swap_cards` that takes integers as arguments (the indices of the two cards) and swaps the cards at these indices.

5. Add a member function to the `Deck` structure with prototype:

```int find_lowest_between(int l, int h);
```

that returns the index of the lowest card in the deck between index `l` and index `h` inclusive.

6. Add a modifier member function to the `Deck` structure named `sort` that uses the selection sort algorithm sketched out in the Sorting section to put the deck’s cards into sorted order.

7. Complete the `merge` function sketched out in the Merge sort section. Then use it to complete the first version of `merge_sort` described in the section.