# 15.1. File Input/Output and `matrix`

es¶

In this chapter we will develop a program that reads and writes files,
parses input, and demonstrates the `matrix`

class. We will also
implement a data structure called `Set`

that expands automatically as
you add elements.

Aside from demonstrating all these features, the real purpose of the program is to generate a two-dimensional table of the distances between cities in the United States. The output is a matrix that looks like this:

```
Atlanta 0
Chicago 700 0
Boston 1100 1000 0
Dallas 800 900 1750 0
Denver 1450 1000 2000 800 0
Detroit 750 300 800 1150 1300 0
Orlando 400 1150 1300 1100 1900 1200 0
Phoenix 1850 1750 2650 1000 800 2000 2100 0
Seattle 2650 2000 3000 2150 1350 2300 3100 1450 0
Atlanta Chicago Boston Dallas Denver Detroit Orlando Phoenix Seattle
```

The diagonal elements are all zero because that is the distance from a city to itself. Also, because the distance from A to B is the same as the distance from B to A, there is no need to print the top half of the matrix.

- Because we only need the half of the dataset contained by the triangle.
- Incorrect! All of the data above the 0 diagonal is a mirror image of the triangle! So, the triangle contains the whole dataset.
- Because triangles are the most effective shape to use when presenting data to others.
- Incorrect! Triangles do look cool, but they aren't necessarily the most effective shape to use when presenting data.
- Because matrices are triangles.
- Incorrect! This triangle is PART OF an apmatrix.
- Because the triangle contains the entire dataset.
- Correct! The triangle contains all data points with no repeat data. If we included all datapoints, the would just be repeats of the points we already have.

Q-1: Why aren’t we filling in every value in our table, who are we leaving blank space above the diagonal of 0’s?

- a geometric shape
- Incorrect! A matrix is not a geometric shape, although they ARE rectangles.
- a two-dimensional vector
- Correct!
- a material in which something develops
- Incorrect! This is a definition for matrix, but not in the programming sense.
- a mold used to shape things
- Incorrect! This is a definition for matrix, but not in the programming sense.

Q-2: Based on how it is used to create the above table, what do you think a `matrix`

is?