Arrays

Problem:  The weather service reports its 9AM temperature readings each day and prints these temperatures in a well organized report.  The report is organized such that these temperatures are printed in a column across the page with the  equivalent Celsius temperature printed underneath.  Write the computer program that reads 5 temperatures from a data file and prints this report.

#include <iostream>

#include <fstream>

#include <iomanip>

using namespace std;

int

main()

{

float temp1, temp2, temp3, temp4, temp5, temp6, temp7;

ifstream fin;

fin.open("input.txt");

if (fin.fail())

{

cerr << "File failed to open";

abort();

}

fin >> temp1 >> temp2 >> temp3 >> temp4 >> temp5 >> temp6 >> temp7;

cout << setw(18) << "Sunday"

<< setw(10) << "Monday"

<< setw(10) << "Tuesday"

<< setw(10) << "Wednesday"

<< setw(10) << "Thursday"

<< setw(10) << "Friday"

<< setw(10) << "Saturday";

cout << endl;

cout << setw(8) << "temp F";

cout << setw(10) << temp1

<< setw(10) << temp2

<< setw(10) << temp3

<< setw(10) << temp4

<< setw(10) << temp5

<< setw(10) << temp6

<< setw(10) << temp7;

cout << endl;

cout << setw(8)<< "temp C";

cout << fixed << setprecision(0);

cout << setw(10) << 5/9.0*(temp1 -32)

<< setw(10) << 5/9.0*(temp2 -32)

<< setw(10) << 5/9.0*(temp3 -32)

<< setw(10) << 5/9.0*(temp4 -32)

<< setw(10) << 5/9.0*(temp5 -32)

<< setw(10) << 5/9.0*(temp6 -32)

<< setw(10) << 5/9.0*(temp7 -32);

cout << endl;

return 0;

}

Sunday    Monday   Tuesday Wednesday  Thursday    Friday  Saturday

temp F        23        32        56        81        66        52        78

temp C        -5         0        13        27        19        11        26

Press any key to continue

What if we processed 100 temperatures?

Array  Structured data type consisting of a group of elements.  Elements of an array are contiguous memory locations.  Each element of an array is of the same data type.  An array allows us to associate one identifier with many elements. This is done by a subscript known as an index.

 temp[0] temp[1] temp[2] temp[3] temp[4] temp[5] temp[6]

Each cell of an array is called an element of that array.

Each element is referenced by the identifier and its subscript.

Ex. temp[3] = 70;

The array index or subscript will range from 0 to one less than the size of the array.

How to declare an array

int temp[7];

datatype  arrayidentifier [size]

where datatype is the type of the array, array identifier is a valid C++ identifier, and size is an integer or integer expression.

const int size = 6;

float high[size];

int i, j, low[10];

Just as when we initialize a single variable in the declaration statement, we can do the same with an array.

int num = 5;

int temp[7] = { 23, 32, 56, 81, 66, 52, 78};

 temp[0] 23 temp[1] 32 temp[2] 56 temp[3] 81 temp[4] 66 temp[5] 52 temp[6] 78

int junk = { 4, 5, 8, 75, 45};

 junk[0] 4 junk[1] 5 junk[2] 8 junk[3] 75 junk[4] 45

The compiler know that the array has 5 elements from the initialization.

We can access an array element through its subscript.

cout << junk[2] <<   << junk[4];  //prints 8 45

i = 2;

cout << junk[i + 2];  // prints 45

How can we print each element of junk ?

for (i = 0; i < 5; i++)

cout << junk[i] << ' ';

Temperature program with arrays

#include <iostream>

#include <fstream>

#include <iomanip>

using namespace std;

int

main()

{

float temp[7];

int i;

ifstream fin;

fin.open("input.txt");

if (fin.fail())

{

cerr << "File failed to open";

abort();

}

for (i = 0; i < 7; i++)

fin >> temp[i];

cout << setw(18) << "Sunday"

<< setw(10) << "Monday"

<< setw(10) << "Tuesday"

<< setw(10) << "Wednesday"

<< setw(10) << "Thursday"

<< setw(10) << "Friday"

<< setw(10) << "Saturday";

cout << endl;

cout << setw(8) << "temp F";

for (i = 0; i < 7; i++)

cout << setw(10) << temp[i];

cout << endl;

cout << setw(8)<< "temp C";

cout << fixed << setprecision(0);

for (i = 0; i < 7; i++)

cout << setw(10) << 5/9.0*(temp[i] -32);

cout << endl;

return 0;

}

Problem:  Write a C++ program which will read integer values into a 5 element array.  It then takes each element and shifts them one position forward making the last element of the old array the first element in the new array.  Use only one array.

Ex.

 5 17 8 5 12 8 23 12 17 23

#include <iostream>

#include <fstream>

#include <iomanip>

using namespace std;

int

main()

{

int shifty[5] = {5, 8, 12, 23, 17};

int i, temp;

for (i = 0; i < 5; i++)

cout << shifty[i] << ' ';

cout << endl;

temp = shifty[4];

for (i = 3; i >= 0; i--)

shifty[i+1] = shifty[i];

shifty[0] = temp;

for (i = 0; i < 5; i++)

cout << shifty[i] << ' ';

cout << endl;

return 0;

}

Problem:  Read integer numbers into a 5 element array.  Print the array.  Divide each element by 3 and store the number in a second array of equal size but of type float.  The answers to 3 decimal places.

#include <iostream>

#include <fstream>

#include <iomanip>

using namespace std;

int

main()

{

int first[5] = {5, 8, 12, 23, 17};

float second[5];

int i;

cout << "The first array is: ";

for (i = 0; i < 5; i++)

{

cout << first[i] << ' ';

second[i] = first[i]/3.0;

}

cout << endl;

cout << fixed << setprecision(3);

cout << "The second array is: ";

for (i = 0; i < 5; i++)

cout << second[i] << ' ';

cout << endl;

return 0;

}

Parallel arrays are arrays of equal size and different data types that have some relationship to one another.