chapter 7 arrays

54
Chapter 7 Arrays C++ Programming, Namiq Sultan 1 Namiq Sultan University of Duhok Department of Electrical and Computer Engineering Reference: Starting Out with C++, Tony Gaddis, 2 nd Ed.

Upload: edison

Post on 05-Jan-2016

69 views

Category:

Documents


1 download

DESCRIPTION

Chapter 7 Arrays. Namiq Sultan University of Duhok Department of Electrical and Computer Engineering Reference: Starting Out with C++, Tony Gaddis, 2 nd Ed. 7.1 Arrays Hold Multiple values. Unlike regular variables, arrays can hold multiple values. Figure 7-1. int count. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Chapter 7  Arrays

Chapter 7

Arrays

C++ Programming, Namiq Sultan 1

Namiq Sultan

University of Duhok

Department of Electrical and Computer Engineering

Reference: Starting Out with C++, Tony Gaddis, 2nd Ed.

Page 2: Chapter 7  Arrays

7.1 Arrays Hold Multiple values

• Unlike regular variables, arrays can hold multiple values.

C++ Programming, Namiq Sultan 2

Page 3: Chapter 7  Arrays

Figure 7-1

C++ Programming, Namiq Sultan 3

int count Enough memory for 1 int

12345

float price Enough memory for 1 float

56.981

char letter Enough memory for 1 char

A

Page 4: Chapter 7  Arrays

Figure 7-2

C++ Programming, Namiq Sultan 4

int Days[6];

Page 5: Chapter 7  Arrays

Table 7-1

Array Declaration Number of Elements

Size of Each Element

Size of the Array

char le tte rs [25]; 25 1 byte 25 bytes

short r ings[100 ]; 100 2 bytes 200 bytes

int m iles [84 ]; 84 4 bytes 336 bytes

float tem p[12 ]; 12 4 bytes 48 bytes

double dD istance[1000 ]; 1000 8 bytes 8000 bytes

C++ Programming, Namiq Sultan 5

Page 6: Chapter 7  Arrays

7.2 Accessing Array elements

• The individual elements of an array are assigned unique subscripts. These subscripts are used to access the elements.

C++ Programming, Namiq Sultan 6

Page 7: Chapter 7  Arrays

Program 7-1

// This program asks the user for the number of hours worked// by 6 employees. It uses a 6-element int array to store the values.

#include <iostream>

int main(void){

short hours[6];

cout << "Enter the hours worked by six employees: ";cin >> hours[0];cin >> hours[1];cin >> hours[2];cin >> hours[3];

C++ Programming, Namiq Sultan 7

Page 8: Chapter 7  Arrays

cin >> hours[4];cin >> hours[5];cout << "The hours you entered are:";cout << " " << hours[0];cout << " " << hours[1];cout << " " << hours[2];cout << " " << hours[3];cout << " " << hours[4];cout << " " << hours[5] << endl;

}

C++ Programming, Namiq Sultan 8

Page 9: Chapter 7  Arrays

Program Output with Example Input

Enter the hours worked by six employees: 20 12 40 30 30 15 [Enter]

The hours you entered are: 20 12 40 30 30 15

C++ Programming, Namiq Sultan 9

Page 10: Chapter 7  Arrays

Figure 7-7

C++ Programming, Namiq Sultan 10

Page 11: Chapter 7  Arrays

Program 7-2

// This program asks the user for the number of hours worked// by 6 employees. It uses a 6-element short array to store the values. #include <iostream>

int main(void){

short hours[6];

cout << "Enter the hours worked by six employees: ";for (int count = 0; count < 6; count++)

cin >> hours[count];cout << "The hours you entered are:";for (count = 0; count < 6; count++)

cout << " " << hours[count];cout << endl;

}C++ Programming, Namiq Sultan 11

Page 12: Chapter 7  Arrays

Program Output with Example Input

Enter the hours worked by six employees: 20 12 40 30 30 15 [Enter]

The hours you entered are: 20 12 40 30 30 15

C++ Programming, Namiq Sultan 12

Page 13: Chapter 7  Arrays

7.4 Array Initialization

• Arrays may be initialized when they are declared.

C++ Programming, Namiq Sultan 13

Page 14: Chapter 7  Arrays

Program 7-6

// This program displays the number of days in each month.// It uses a 12-element int array.#include <iostream>

int main(){

int days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};for (int count = 0; count < 12; count++){

cout << "Month " << (count + 1) << " has ";cout << days[count] << " days.\n";

}}

C++ Programming, Namiq Sultan 14

Page 15: Chapter 7  Arrays

Program Output

Month 1 has 31 days.Month 2 has 28 days.Month 3 has 31 days.Month 4 has 30 days.Month 5 has 31 days.Month 6 has 30 days.Month 7 has 31 days.Month 8 has 31 days.Month 9 has 30 days.Month 10 has 31 days.Month 11 has 30 days.Month 12 has 31 days.

C++ Programming, Namiq Sultan 15

Page 16: Chapter 7  Arrays

Program 7-7

// This program uses an array of ten characters to store // the first ten letters of the alphabet. The ASCII codes // of the characters are displayed.#include <iostream>

int main(){

char letters[10] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'};

cout << "Character" << "\t" << "ASCII Code\n";cout << "--------" << "\t" << "----------\n";for (int count = 0; count < 10; count++){

cout << letters[count] << "\t\t";cout << int(letters[count]) << endl;

}} C++ Programming, Namiq Sultan 16

Page 17: Chapter 7  Arrays

Program Output

Character ASCII Code--------- ----------

A 65B 66C 67D 68E 69F 70G 71H 72I 73

J 74

C++ Programming, Namiq Sultan 17

Page 18: Chapter 7  Arrays

Partial Array Initialization

• When an array is being initialized, C++ does not require a value for every element.

int numbers[7] = {1, 2, 4, 8};

C++ Programming, Namiq Sultan 18

Page 19: Chapter 7  Arrays

Implicit Array Sizing

• It is possible to declare an array without specifying its size, as long as you provide an initialization list.

float ratings[]={1.0, 1.5, 2.0, 2.5, 3.0};

C++ Programming, Namiq Sultan 19

Page 20: Chapter 7  Arrays

Initializing With Strings

• When initializing a character array with a string, simply enclose the string in quotation marks:

char name[] = “Warren”;

C++ Programming, Namiq Sultan 20

Page 21: Chapter 7  Arrays

Figure 7-11

C++ Programming, Namiq Sultan 21

Page 22: Chapter 7  Arrays

Program 7-9

// This program displays the contents of two char arrays.#include <iostream>

int main(){

char name1[] = "Holly";char name2[] = {'W', 'a', 'r', 'r', 'e', 'n', '\0'};

cout << name1 << endl;cout << name2 << endl;

}

C++ Programming, Namiq Sultan 22

Page 23: Chapter 7  Arrays

Program Output

Holly

Warren

C++ Programming, Namiq Sultan 23

Page 24: Chapter 7  Arrays

7.5 Processing Array Contents

• Individual array elements are processed like any other type of variable.

C++ Programming, Namiq Sultan 24

Page 25: Chapter 7  Arrays

Program 7-10

// This program stores, in an array, the hours worked by 5// employees who all make the same hourly wage.#include <iostream>int main(){

int hours[5];float payRate;

cout << "Enter the hours worked by 5 employees who all\n";cout << "earn the same hourly rate.\n";for (int index = 0; index < 5; index++){

cout << "Employee #" << (index + 1) << ": ";cin >> hours[index];

}

C++ Programming, Namiq Sultan 25

Page 26: Chapter 7  Arrays

cout << "Enter the hourly pay rate for the employees: ";cin >> payRate;cout << "Here is the gross pay for each employee:\n";

for (index = 0; index < 5; index++){

float grossPay = hours[index] * payRate;cout << "Employee #" << (index + 1);cout << ": $" << grossPay << endl;

}}

C++ Programming, Namiq Sultan 26

Page 27: Chapter 7  Arrays

Program Output with Example Input

Enter the hours worked by 5 employees who all

earn the same hourly rate.

Employee #1: 5 [Enter]

Employee #2: 10 [Enter]

Employee #3: 15 [Enter]

Employee #4: 20 [Enter]

Employee #5: 40 [Enter]

Enter the hourly pay rate for all the employees: 12.75 [Enter]

Here is the gross pay for each employee:

Employee #1: $63.75

Employee #2: $127.50

Employee #3: $191.25

Employee #4: $255.00

Employee #5: $510.00

C++ Programming, Namiq Sultan 27

Page 28: Chapter 7  Arrays

7.8 Arrays As Function Arguments

• To pass an array as an argument to a function, pass the name of the array.

C++ Programming, Namiq Sultan 28

Page 29: Chapter 7  Arrays

Program 7-13// This program demonstrates that an array element is // passed to a function like any other variable.#include <iostream>using namespace std;

void ShowValue(int Num){

cout << Num << " ";}

int main(){

int collection[8] = {5, 10, 15, 20, 25, 30, 35, 40};for (int Cycle = 0; Cycle < 8; Cycle++)

ShowValue(collection[Cycle]);}

C++ Programming, Namiq Sultan 29

Page 30: Chapter 7  Arrays

Program Output

5 10 15 20 25 30 35 40

C++ Programming, Namiq Sultan 30

Page 31: Chapter 7  Arrays

Program 7-14// This program demonstrates an array being passed to a function.#include <iostream>

// Definition of function showValues. This function accepts an array

void showValues(int nums[]){

for (int index = 0; index < 8; index++)cout << nums[index] << " ";

}

int main(){

int collection[8] = {5, 10, 15, 20, 25, 30, 35, 40};showValues(collection); // Passing address of array collection

}

C++ Programming, Namiq Sultan 31

Page 32: Chapter 7  Arrays

Program Output

5 10 15 20 25 30 35 40

C++ Programming, Namiq Sultan 32

Page 33: Chapter 7  Arrays

Program 7-16// This program uses a function that display the contents // of an integer array of any size.#include <iostream>

void showValues(int nums[], int elements){for (int index = 0; index < elements; index++)

cout << nums[index] << " ";

}

int main(){int set1[8] = {5, 10, 15, 20, 25, 30, 35, 40};int set2[4] = {2, 4, 6, 8};int set3[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};showValues(set1, 8);cout << endl;showValues(set2, 4);cout << endl;showValues(set3, 12);

} C++ Programming, Namiq Sultan 33

Page 34: Chapter 7  Arrays

Program Output

5 10 15 20 25 30 35 402 4 6 8

1 2 3 4 5 6 7 8 9 10 11 12

C++ Programming, Namiq Sultan 34

Page 35: Chapter 7  Arrays

Program 7-17

// This program uses a function that doubles the contents // of the elements within an array.#include <iostream>

void doubleArray(int [], int); // Function prototypeconst int arraySize = 12;

int main(){

int set[arraySize] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};cout << "The arrays values are:\n";for (int index = 0; index < arraySize; index++)

cout << set[index] << " ";cout << endl;doubleArray(set, arraySize);cout << "After calling doubleArray, the values are:\n";

C++ Programming, Namiq Sultan 35

Page 36: Chapter 7  Arrays

for (int index = 0; index < arraySize; index++)cout << set[index] << " ";

cout << endl;}

// Definition of function doubleArray. This function doubles the value of // each element in the array passed into nums. The value passed into size // is the number of elements in the nums array.

void doubleArray(int nums[], int size){

for (int index = 0; index < size; index++)nums[index] *= 2;

}

C++ Programming, Namiq Sultan 36

Page 37: Chapter 7  Arrays

Program Output

The array values are:

1 2 3 4 5 6 7 8 9 10 11 12

After calling doubleArray, the values are:

2 4 6 8 10 12 14 16 18 20 22 24

C++ Programming, Namiq Sultan 37

Page 38: Chapter 7  Arrays

Examples• C++ program to find the largest number in a given array.

• Repeat (1) using a function that accepts an array and returns the largest element.

• C++ program to find the largest two number s in a given array.

• Construct an array of Fibonacci series.

• Sort an array of three elements.

HW:

• Reverse the elements of a given array.

• Count the repetition of number 0 in a given array.

• Find the sum of smallest and largest elements of a given array.

C++ Programming, Namiq Sultan 38

Page 39: Chapter 7  Arrays

7.10 Two-dimensional Arrays

• A two-dimensional array is like several identical arrays put together. It is useful for storing multiple sets of data.

C++ Programming, Namiq Sultan 39

Page 40: Chapter 7  Arrays

Program 7-18

// This program demonstrates a two-dimensional array.

#include <iostream>

int main(){

float sales[3][4]; // 2D array, 3 rows and 4 columns.float totalSales = 0; // To hold the total sales.int dir, qtr; // Loop counters.

cout << "This program calculate the total sales of\n";cout << "all the company's divisions.\n";cout << "Enter the following sales information:\n\n";

C++ Programming, Namiq Sultan 40

Page 41: Chapter 7  Arrays

// Nested loops to fill the array with quarterly// sales figures for each division.for (div = 0; div < 3; div++){

for (qtr = 0; qtr < 4; qtr++){

cout << "Division " << (div + 1);cout << ", Quarter " << (qtr + 1) << ": $";cin >> sales[div][qtr];

}cout << endl; // Print blank line.

}

C++ Programming, Namiq Sultan 41

Page 42: Chapter 7  Arrays

// Nested loops to add all the elements.for (div = 0; div < 3; div++)

for (qtr = 0; qtr < 4; qtr++)totalSales += sales[div][qtr];

cout << "The total sales for the company are: $";cout << totalSales << endl;

}

C++ Programming, Namiq Sultan 42

Page 43: Chapter 7  Arrays

Program Output with Example Input

This program will calculate the total sales of

all the company's divisions.

Enter the following sales information:

Division 1, Quarter 1: $31569.45 [Enter]

Division 1, Quarter 2: $29654.23 [Enter]

Division 1, Quarter 3: $32982.54 [Enter]

Division 1, Quarter 4: $39651.21 [Enter]

Division 2, Quarter 1: $56321.02 [Enter]

Division 2, Quarter 2: $54128.63 [Enter]

Division 2, Quarter 3: $41235.85 [Enter]

Division 2, Quarter 4: $54652.33 [Enter]

C++ Programming, Namiq Sultan 43

Page 44: Chapter 7  Arrays

Output continues

Division 3, Quarter 1: $29654.35 [Enter]Division 3, Quarter 2: $28963.32 [Enter]Division 3, Quarter 3: $25353.55 [Enter]Division 3, Quarter 4: $32615.88 [Enter]

The total sales for the company are: $456782.34

C++ Programming, Namiq Sultan 44

Page 45: Chapter 7  Arrays

Two-dimensional Array Initialization

• Both of the following declarations perform the same initialization:

int Hours[3][2]={{8,5},{7,9},{6,3}};

int Hours[3][2]={8,5,7,9,6,3};

• It is helpful to write the declaration as:

int Hours[3][2]={ 8,5,

7,9,

6,3};

C++ Programming, Namiq Sultan 45

Page 46: Chapter 7  Arrays

Passing Two-dimensional Arrays to Functions

• When a two-dimensional array is passed to a function, the parameter type must contain a size declarator for the number of columns.

C++ Programming, Namiq Sultan 46

Page 47: Chapter 7  Arrays

Program 7-19

// This program demonstrates a function that accepts a two-dimensional

// array as an argument.

#include <iostream>

void showArray(int [][4], int); // Function prototype

int main()

{

int Table[3][4] ={1, 2, 3, 4,

5, 6, 7, 8,

9, 10, 11, 12};

C++ Programming, Namiq Sultan 47

Page 48: Chapter 7  Arrays

int Table2[4][4] = { 10, 20, 30, 40,

50, 60, 70, 80,

90, 100, 110, 120,

130, 140, 150, 160};

Cout<<“The contents of Table1 are:\n”;

showArray(Table1, 3);

Cout<<“The contents of Table2 are:\n”;

showArray(Table2, 4);

}

C++ Programming, Namiq Sultan 48

Page 49: Chapter 7  Arrays

// Function definition for showArray. This function accepts a

// two-dimensional integer array as an argument. The array must have

// four columns. The second argument, Rows, specifies the number of

// rows in the array. The function displays the contents of the array.

void showArray(int Array[][4], int Rows)

{

for(int x=0; x<Rows; x++)

{

for(int y=0; y<4; y++)

cout<< Array[x][y] << “\t“;

cout << endl;

}

}C++ Programming, Namiq Sultan 49

Page 50: Chapter 7  Arrays

7.10 Arrays of Strings

• A two-dimensional array of characters can be used as an array of C-strings.

C++ Programming, Namiq Sultan 50

Page 51: Chapter 7  Arrays

Program 7-20

C++ Programming, Namiq Sultan 51

// This program displays the number of days in each month. It uses a two-

// dimensional character array to hold the names of the months and an int array to

// hold the number of days.#include <iostream>

int main(){ char months[12][10] = {"January", "February", "March", "April", "May",

"June", "July", "August", "September”, "October", "November",

"December"};int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};for (int count = 0; count < 12; count++){

cout << months[count] << " has ";cout << days[count] << " days.\n";

}}

Page 52: Chapter 7  Arrays

C++ Programming, Namiq Sultan 52

Program Output

January has 31 days.February has 28 days.March has 31 days.April has 30 days. May has 31 days. June has 30 days. July has 31 days.August has 31 days. September has 30 days. October has 31 days. November has 30 days.December has 31 days.

Page 53: Chapter 7  Arrays

Three Dimensional Arrays and Beyond

• C++ allows you to create arrays with virtually any number of dimensions.

• Here is an example of a three-dimensional array declaration:

float seat[3][5][8];

C++ Programming, Namiq Sultan 53

Page 54: Chapter 7  Arrays

Homework• Add two 3x3 matrices and put the result in a third matrix.

• Exchange the elements of first column and second column of a given matrix.

• Find the sum of elements of upper-right triangle of a matrix.

• Print the lower-left triangle of a matrix.

• Write a program to print transpose of a matrix .

C++ Programming, Namiq Sultan 54