0% found this document useful (0 votes)
6 views43 pages

Week 10 Lecture

This document provides an overview of arrays in programming, specifically focusing on their definition, declaration, and processing in C++. It explains the concept of one-dimensional arrays, how to access and manipulate their elements, and includes examples of initialization and common operations. Additionally, it discusses restrictions and best practices when working with arrays in C++.

Uploaded by

sehrish.ejaz01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views43 pages

Week 10 Lecture

This document provides an overview of arrays in programming, specifically focusing on their definition, declaration, and processing in C++. It explains the concept of one-dimensional arrays, how to access and manipulate their elements, and includes examples of initialization and common operations. Additionally, it discusses restrictions and best practices when working with arrays in C++.

Uploaded by

sehrish.ejaz01
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 43

CS1002 – Programming

Fundamentals
Lecture # 19
Thursday, November 02, 2023
FALL 2023
FAST – NUCES, Faisalabad Campus

Rizwan Ul Haq
2
Arrays

CS1002 - Fall 2023


3 Introduction
 A data type is called simple if variables of that type can store only
one value at a time
 A structured data type is one in which each data item is a collection
of other data items

CS1002 - Fall 2023


4 Example
//Program that takes five numbers print their average
//and the numbers again
#include<iostream>
using namespace std;
int main(){
int n1, n2, n3, n4, n5;
double average;
cout << "Enter five integers : " ;
cin >> n1 >> n2 >> n3 >> n4 >> n5 ;

average = (n1 + n2 + n3 + n4 + n5) / 5.0 ;

cout << "The average of the given numbers = " << average ;
cout << "\nand the numbers are n1 = " << n1 << " n2 = " << n2
<< " n3 = " << n3 << " n4 = " << n4
<< " n5 = " << n5 << endl ;
return 0;
}
CS1002 - Fall 2023
5 Example
 Five variables must be declared because the numbers are to be
printed later
 All variables are of type int, that is, of the same data type
 The way in which these variables are declared indicates that the
variables to store these numbers all have the same name, except the
last character, which is a number

CS1002 - Fall 2023


6 Arrays
 Array: A collection of a fixed number of components where all of the
components have the same data type
 In a one-dimensional array, the components are arranged in a list
form
 Syntax for declaring a one-dimensional array:

 intExp evaluates to a positive integer

CS1002 - Fall 2023


7 Arrays
num[0]
Example: num[1]

int num[6]; num[2]


num[3]
num[4]
num[5]

num[0] num[1] num[2] num[3] num[4] num[5]

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


num
CS1002 - Fall 2023
8 Defining Arrays
 When defining arrays, specify
 Name
 Type of array
 Number of elements
arrayType arrayName[ numberOfElements ];
 Examples:
int c[ 10 ];
float myArray[ 3284 ];
 Defining multiple arrays of same type
 Format similar to regular variables
 Example:
int b[ 100 ], x[ 27 ];
CS1002 - Fall 2023
9 Accessing Array Components
 General syntax:

 Where indexExp, called an index, is any expression whose value is a


nonnegative integer
 Index value specifies the position of the component in the array
 [] is the array subscripting operator
 The array index always starts at 0

CS1002 - Fall 2023


10 Accessing Array Components (cont'd.)
int list[8];
[0] [1] [2] [3] [4] [5] [6] [7]
list

list[5] = 75;
[0] [1] [2] [3] [4] [5] [6] [7]
list 75

CS1002 - Fall 2023


11 Accessing Array Components (cont'd.)
list[3] = 20 ;
[0] [1] [2] [3] [4] [5] [6] [7]
list 20

list[6]=100;

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


list 20 100

list[2]= list[3] + list[6];


[0] [1] [2] [3] [4] [5] [6] [7]
list 120 20 100
CS1002 - Fall 2023
12 Accessing Array Components (cont'd.)

CS1002 - Fall 2023


13 Accessing Array Components (cont'd.)
Array can also be declared as
const int SIZE_OF_ARRAY = 20;
int array[SIZE_OF_ARRAY] ;

First declare a named constant and then use it to declare an array of this specific size.

When an array is declared its size must be known. You cannot do this:
int arr_size;
cout << "Enter size of array ";
cin >> arr_size;

int arr[arr_size];

CS1002 - Fall 2023


14 Processing One-Dimensional Arrays
 Some basic operations performed on a one-dimensional array are:
 Initializing
 Inputting data
 Outputting data stored in an array
 Finding the largest and/or smallest element
 Each operation requires ability to step through the elements of the
array
 Easily accomplished by a loop

CS1002 - Fall 2023


15 Processing One-Dimensional Arrays (cont'd.)
 Consider the declaration
int list[100]; //array of size 100
int i;

 Using for loops to access array elements:


for (i = 0; i < 100; i++) //Line 1
//process list[i] //Line 2

 Example:
for (i = 0; i < 100; i++) //Line 1
cin >> list[i]; //Line 2
CS1002 - Fall 2023
16 Processing One-Dimensional Arrays (cont'd.)
double scores[10];
int index;
double largest, sum, average;

Initializing an array
for (index = 0 ; index < 10 ; ++index)
scores[index] = 0.0 ;

Reading data into array


for (index = 0 ; index < 10 ; ++index)
cin >> scores[index] ;

Printing the array


for (index = 0 ; index < 10 ; ++index)
cout << scores[index] << “ ”;

CS1002 - Fall 2023


17 Processing One-Dimensional Arrays (cont'd.)
Finding an element in an array
int index = -1, value;
cout << “Please enter the value to find : ” ;
cin >> value;
for (int i = 0 ; i < 10 ; ++i){
if(values[i] == value)
index = i;
}
if (index != -1)
cout << “The value was found at index = ” << index ;
CS1002 - Fall 2023
18 Processing One-Dimensional Arrays (cont'd.)
Finding sum and average of an array
sum = 0.0;
for (index = 0 ; index < 10 ; ++index)
sum = sum + scores[index];
average = sum / 10;

Largest element in the array


maxIndex = 0;
for (index = 1 ; index < 10 ; ++index)
if (scores[maxIndex] < scores[index])
maxIndex = index;
largest = scores[maxIndex];
CS1002 - Fall 2023
19 Processing One-Dimensional Arrays

CS1002 - Fall 2023


20 Arrays by an Example …
1 // C++ Program
2 // Initializing an array.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7
8 #include <iomanip>
9
10 using std::setw; Declare a 10-element array of
11
12 int main()
integers.
13 {
14 int n[ 10 ]; // n is an array of 10 integers
15
Initialize array to 0 using a
16 // initialize elements of array n to 0 for loop. Note that the array
17 for ( int i = 0; i < 10; i++ ) has elements n[0] to n[9].
18 n[ i ] = 0; // set element at location i to 0
19
20 cout << "Element" << setw( 13 ) << "Value" << endl;
21
22 // output contents of array n in tabular format
23 for ( int j = 0; j < 10; j++ )
24 cout << setw( 7 ) << j << setw( 13 ) << n[ j ] << endl;
25
CS1002 - Fall 2023 26 return 0; // indicates successful termination
27
28 } // end main
21 Output
Element Value
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
CS1002 - Fall 2023
22 Example

CS1002 - Fall 2023


23 Array Index Out of Bounds
 If we have the statements:
const ARRAY_SIZE = 10;
double num[ARRAY_SIZE];
int i;

 The component num[i] is valid if i = 0, 1, 2, 3, 4, 5, 6, 7, 8, or 9


 The index of an array is in bounds if the index >=0 and the index <=
ARRAY_SIZE-1
 Otherwise, we say the index is out of bounds
 In C++, there is no guard against indices that are out of bounds
CS1002 - Fall 2023
24 Array Index Out of Bounds

CS1002 - Fall 2023


25 How array element is calculated
 Each element is placed at consecutive location
 We can calculate address of any element of array by performing simple
arithmetic
address_of_index_x = base_address + size_of_datatype * x
 Example
int array[10] ;
Assume this array starts at address 100 in memory. To calculate address of index 5.
address_of_index_5 = 100 + 4*5 = 120
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]

100 103 104 107 108 111 112 115 116 119 120 123 124 127 128 131 132 135 136 139

Note: Compiler just knows the address of the first element of the array known as the base
address of the array. All other indexes are calculated relative to base address.
CS1002 - Fall 2023
26 How array element is calculated
 Can we have –ve indexes in the array
 Like array[-2]

CS1002 - Fall 2023


27 Array Initialization During Declaration
 Arrays can be initialized during declaration
 In this case, it is not necessary to specify the size of the array
 Size determined by the number of initial values in the braces
 Example:

 double sales[] = {12.25, 32.50, 16.90, 23, 45.68};


CS1002 - Fall 2023
28 Partial Initialization of Arrays During Declaration
 The statement:
int list[10] = {0};
declares list to be an array of 10 components and initializes all of
them to zero
 The statement:
int list[10] = {8, 5, 12};
declares list to be an array of 10 components, initializes list[0] to 8,
list[1] to 5, list[2] to 12 and all other components are initialized to 0

CS1002 - Fall 2023


29 Partial Initialization of Arrays During Declaration
(cont'd.)
 The statement:
int list[] = {5, 6, 3};
declares list to be an array of 3 components and initializes list[0] to 5,
list[1] to 6, and list[2] to 3

CS1002 - Fall 2023


30 Partial Initialization of Arrays During Declaration
(cont'd.)
 int list[10] = {2, 5, 6, , 8}; //illegal
 In this initialization, because the fourth element is uninitialized, all
elements that follow the fourth element must be left uninitialized

CS1002 - Fall 2023


31 Arrays by an Example II …
1 // C++ Program
2 // Initializing an array with a declaration.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7
8 #include <iomanip>
9
10 using std::setw; Note the use of the initializer
11 list.
12 int main()
13 {
14 // use initializer list to initialize array n
15 int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 };
16
17 cout << "Element" << setw( 13 ) << "Value" << endl;
18
19 // output contents of array n in tabular format
20 for ( int i = 0; i < 10; i++ )
21 cout << setw( 7 ) << i << setw( 13 ) << n[ i ] << endl;
22
23 return 0; // indicates successful termination
24
25 } // end main
CS1002 - Fall 2023
32 Some Restrictions on Array Processing
 Consider the following statements:
int myList[5] = {0, 4, 8, 12, 16}; //Line 1
int yourList[5]; //Line 2

 C++ does not allow aggregate operations on an array:


yourList = myList ; //illegal

 Solution:
for(int i = 0 ; i < 5 ; ++i)
yourList[i] = myList[i] ;
CS1002 - Fall 2023
33 Some Restrictions on Array Processing (cont'd.)
 The following is illegal too:
cin >> yourList ; //illegal

 Solution:
for(int i=0 ; i<5 ; ++i)
cin >> yourList[i] ;

 The following statements are legal, but do not give the desired results:
cout << yourList ;
if(myList <= yourList)
.
.
.

CS1002 - Fall 2023


34 Examples Using Arrays
 Array size
 Can be specified with constant variable (const)
const int SIZE = 20;
 Constants cannot be changed
 Constants must be initialized when declared
 Also called named constants or read-only variables

CS1002 - Fall 2023


35 Arrays by an Example - III …
1 // C++ Program
2 // Initialize array s to the even integers from 2 to 20.
3 #include <iostream>
4
5 using namespace std;
6 #include <iomanip>
7 Note use of const keyword.
8 Only const variables can
9 int main()
10 { specify array sizes.
11 // constant variable can be used to specify array size
12 const int ARRAYSIZE = 10;
13
14 int s[ARRAYSIZE ]; // array s has 10 elements
15 The program becomes more
16 for ( int i = 0; i < ARRAYSIZE; i++ ) // set the values scalable when we set the array
17 s[ i ] = 2 + 2 * i; size using a const variable. We
18 can change arraySize, and all
19 cout << "Element" << setw( 13 ) << "Value" << endl; the loops will still work
20 (otherwise, we’d have to update
21 // output contents of array s in tabular format every loop in the program).
22 for ( int j = 0; j < ARRAYSIZE; j++ )
23 cout << setw( 7 ) << j << setw( 13 ) << s[ j ] << endl;
24
25 return 0; // indicates successful termination
CS1002 - Fall 2023
26
27 } // end main
36 Program Output …
Element Value
0 2
1 4
2 6
3 8
4 10
5 12
6 14
7 16
8 18
9 20
CS1002 - Fall 2023
37 Arrays by an Example -IV…
1 // C++ Program
2 // Compute the sum of the elements of the array.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7
8 int main()
9 {
10 const int ARRAYSIZE = 10;
11
12 int a[ arraySize ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
13
14 int total = 0;
15
16 // sum contents of array a
17 for ( int i = 0; i < ARRAYSIZE; i++ )
18 total += a[ i ];
19
20 cout << "Total of array element values is " << total << endl;
21
22 return 0; // indicates successful termination
23 Output:
24 } // end main Total of array element values is 55
CS1002 - Fall 2023
38 Arrays by an Example –VI …
1 // C++ Program
2 // Roll a six-sided die 6000 times.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7
8 #include <iomanip> An array is used instead of 6 regular variables,
9
10 using std::setw; and the proper element can be updated
11 This creates a number between 1 and 6, which
12 #include <cstdlib> determines the index of frequency[] that
13 #include <ctime>
14 should be incremented.
15 int main()
16 {
17 const int ARRAY_SIZE= 7;
18 int frequency[ARRAY_SIZE ] = { 0 };
19
20 srand( time( 0 ) ); // seed random-number generator
21
22 // roll dice 6000 times
23 for ( int roll = 1; roll <= 6000; roll++ )
24 ++frequency[ 1 + rand() % 6 ];
CS1002 - Fall 2023
39

26
27 cout << "Face" << setw( 13 ) << "Frequency" << endl;
28
29 // output frequency elements 1-6 in tabular format
30 for ( int face = 1; face < ARRAY_SIZE; face++ )
31 cout << setw( 4 ) << face
32 << setw( 13 ) << frequency[ face ] << endl;
33
34 return 0; // indicates successful termination
35
36 } // end main

Program Output …
Face Frequency
1 1003
2 1004
3 999
4 980
5 1013
CS1002 - Fall 2023
6 1001
40 Arrays by an Example –VII …
1 // C++ Program
2 // Student poll program.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7
8 #include <iomanip>
9
10 using std::setw;
11
12 int main()
13 {
14 // define array sizes
15 const int RESPONSE_SIZE = 40; // size of array responses
16 const int FREQUENCY_SIZE = 11; // size of array frequency
17
18 // place survey responses in array responses
19 int responses[RESPONSE_SIZE ] = { 1, 2, 6, 4, 8, 5, 9, 7, 8,
20 10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7,
21 5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10 };
22
23 // initialize frequency counters to 0
24 int frequency[FREQUENCY_SIZE ] = { 0 };
25
CS1002 - Fall 2023
41

26 // for each answer, select value of an element of array


27 // responses and use that value as subscript in array
28 // frequency to determine element to increment
29 for ( int answer = 0; answer < RESPONSE_SIZE; answer++ )
30 ++frequency[ responses[answer] ];
31
32 // display results
33 cout << "Rating" << setw( 17 ) << "Frequency" << endl;
34
35 // output frequencies in tabular format
36 for ( int rating = 1; rating < FREQUENCY_SIZE ; rating++ )
37 cout << setw( 6 ) << rating
38 << setw( 17 ) << frequency[ rating ] << endl;
39
40 return 0; // indicates successful termination
41
42 } // end main
responses[answer] is the
rating (from 1 to 10). This
determines the index in
frequency[] to increment.
CS1002 - Fall 2023
42
Program Output …
Rating Frequency
1 2
2 2
3 2
4 2
5 5
6 11
7 5
8 7
9 1
10 3

CS1002 - Fall 2023


43 Questions

CS1002 - Fall 2023

You might also like