CSCI 261 - Programming Concepts - Spring 2021

Lab 5A - Array Input/Output

This lab is due by Tuesday, March 23, 2021 11:59 PM.
As with all labs you may, and are encouraged, to pair program a solution to this lab. If you choose to pair program a solution, be sure that you individually understand how to generate the correct solution.


Concepts


The goal of this assignment is to gain practice with arrays: how to declare (and initialize) arrays, how to access array values, and how to store values in arrays.


Collections of Things


To date, you've focused mostly on working with data one "piece" at a time. But in the real world, we're often concerned with collections of data: scores, hourly air temperatures, pressure readings over time, and colors of socks. In computer science, we call these collections "data structures" -- things that contain data. Perhaps the most simple data structure is the array: a container that holds multiple instances of only one type of thing. For example, you might have an array called scores that contains a bunch of ints , or an array called windSpeed that contains a bunch of doubles , or an array called favCharacters that contains a bunch of chars .

There are a couple of "rules" you need to remember when dealing with arrays in C++.

First, arrays can only store values of one specific type, so you can't store both cats and dogs in the same array. Sometimes you can "bend" this rule, depending on type compatibility and coercion (e.g., you can store both int s and double s in an array of type double ), but typically you don't do this. Here's an example of an array of characters.

char lettersInAlphabet[26];  // rule1: can only store char values

Second, arrays have a "fixed size". This means that you must tell the computer how many elements you intend to store in an array when you declare said array, and you can never store more than that number of items in the array.

char lettersInAlphabet[26];  // rule2: can only store 26 values

Why does the machine need to know how many elements you intend to store in the array? In a nutshell, the machine needs to know in order to allocate enough memory for N pieces of data of a given type. In the example above, the machine needs to allocate enough memory to store 26 char values.

Third, you need to remember that arrays are "zero-indexed" meaning the first item in the array is "item 0" and the second is "item 1" and so on. This is important to remember, because it is easy to confuse the size of the array with the last index of the array. If you initialize an array like this:

int shotsOfWheatgrassDrunkThisWeek[7];
// rule3: what are the valid indices? 0 through 6.

Notice how the size of the array is 7, but the last index is 6.


C++ Array Syntax


You should have seen some examples of array syntax using [ and ] in class and in your zyBook activities. As such, we won't go over the syntax in detail here. However, here's a brief summary.

int x = 1;
int y = 2;
int z;
int scores[10];
scores[1] = 27;
scores[y] = 2;
z = scores[x] + scores[y];
cout << scores[x + 1];

Please pause here until you totally understand what the syntax means in the example above. How many numbers can score hold? 10. What are their "names"? scores[0] through scores[9] . What is the ending value of z? 29. What is printed to the screen? 2. What does the array look like in memory?

27 2
0 1 2 3 4 5 6 7 8 9

We suggest you review your section's lecture and zyBook reading, and come see us if you do not understand the syntax in the previous example.


Arrays and Loops


Since you're aware of how to use loops and since you now know how to create arrays, you should recognize that there is a lot of hidden "power" in combining these two elements together. In fact, loops and arrays work so well together, it's rare you'll see one without the other -- they're best friends (but only friends, mind you). Let's take a look:

const int DAYS_IN_WEEK = 7;

int shotsOfWheatgrass[DAYS_IN_WEEK] = {0, 1, 1, 1, 1, 7, 5};

for( int i = 0; i < DAYS_IN_WEEK; ++i ) {
    cout << "On day " << i << " I drank "
         << shotsOfWheatgrass[i] << " shots." << endl;
}

Or better yet,


const int DAYS_IN_WEEK = 7;

int shotsOfWheatgrass[DAYS_IN_WEEK] = {0, 1, 1, 1, 1, 7, 5};

for( int i = 0; i < DAYS_IN_WEEK; ++i ) {
    cout << "On day " << i << " I drank " << shotsOfWheatgrass[i];
    if (shotsOfWheatgrass[i] == 1) {
        cout << " shot." << endl;
    } else {
        cout << " shots." << endl;
    }
}

Do you see how inside the loop, the value for i is used to access each value in the array?


Instructions


Create a program that prompts the users for fifteen whole numbers, stores them in an array, and then prints out the contents of the array. An example interaction follows:

Hey! Witness my first array mojo!
Enter 15 numbers and I will tell you what they are.
Number 1: 8
Number 2: 6
Number 3: 7
Number 4: 5
Number 5: 3
Number 6: 2
Number 7: 4
Number 8: 1
Number 9: 3
Number 10: 13
Number 11: 32
Number 12: 14
Number 13: 25
Number 14: 51
Number 15: 9
So awesome!
The numbers are: 8 6 7 5 3 2 4 1 3 13 32 14 25 51 9
Have a nice day!

If you are unsure how to get started, here are the suggested steps:


Lab Submission



You will submit your solution to this lab with the rest of Set5. Detailed instructions for doing this are posted in Assignment 5.


This lab is due by Tuesday, March 23, 2021 11:59 PM.
As with all labs you may, and are encouraged, to pair program a solution to this lab. If you choose to pair program a solution, be sure that you individually understand how to generate the correct solution.