CS-114 Fundamentals of
Programming
Arrays
Department of Computer & Software Engineering (DC&SE)
College of E&ME
NUST
Introduction
Arrays
– Structures of related data items
– Static entity (same size throughout program)
Arrays
Array
– Consecutive group of memory locations
– Same name and type (int, char, etc.)
To refer to an element
– Specify array name and position number (index)
– Format: arrayname[ position number ]
– First element at position 0
N-element array c
c[ 0 ], c[ 1 ] … c[ n - 1 ]
– Nth element as position N-1
Arrays
Array elements like other variables
– Assignment, printing for an integer array c
c[ 0 ] = 3;
cout << c[ 0 ];
Can perform operations inside subscript
c[ 5 – 2 ] same as c[3]
Arrays
Name of array (Note that
all elements of this array
have the same name, c)
c[0] -45
c[1] 6
c[2] 0
c[3] 72
c[4] 1543
c[5] -89
c[6] 0
c[7] 62
c[8] -3
c[9] 1
c[10] 6453
c[11] 78
Position number of the
element within array c
Declaring Arrays
When declaring arrays, specify
– Name
– Type of array
• Any data type
– Number of elements
– type arrayName[ arraySize ];
int c[ 10 ]; // array of 10 integers
float d[ 3284 ]; // array of 3284 floats
Declaring multiple arrays of same type
– Use comma separated list, like regular variables
int b[ 100 ], x[ 27 ];
Examples Using Arrays
Initializing arrays
– For loop
• Set each element
– Initializer list
• Specify each element when array declared
int n[ 5 ] = { 1, 2, 3, 4, 5 };
• If not enough initializers, rightmost elements 0
– To set every element to same value
int n[ 5 ] = { 0 };
– If array size omitted, initializers determine size
int n[] = { 1, 2, 3, 4, 5 };
• 5 initializers, therefore 5 element array
1
2 // Initializing an array.
3 #include <iostream> iomanip is a library in C++ that is used to
4 manage input and output formatting. It gives
5 using std::cout; the user the power to control output
6 using std::endl;
formatting processes, such as alignment, text
7
formatting, and numeric precision in the
8 #include <iomanip>
9
console for better data visualization.
10 using std::setw;
11
Declare a 10-element array of
12 int main() integers.
13 {
14 int n[ 10 ]; // n is an array ofInitialize array
10 integers to 0 using a
15 for loop. Note that the array
16 // initialize elements of array nhas
toelements
0 n[0] to n[9].
17 for ( int i = 0; i < 10; i++ )
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
The Setw C++ function helps set the field width
used for output operations
26 return 0; // indicates successful termination
27
28 } // end main
Element Value
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
1
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;
11
12 int main() Note the use of the initializer
13 { list.
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
Element Value
0 32
1 27
2 64
3 18
4 95
5 14
6 90
7 70
8 60
9 37
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
1
2 // Initialize array s to the even integers from 2 to 20.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7
8 #include <iomanip>
9
10 using std::setw;
11 Note use of const keyword.
12 int main()
Only const variables can
13 {
specify array sizes.
14 // constant variable can be used to specify array size
15 const int arraySize = 10;
The program becomes more
16
17 int s[ arraySize ]; // array s
scalable when we set the array
has 10 elements
18 size using a const variable.
19 for ( int i = 0; i < arraySize; i++ ) //We setcan change
the arraySize,
values
20 s[ i ] = 2 + 2 * i; and all the loops will still
21 work (otherwise, we’d have to
22 cout << "Element" << setw( 13 ) update
<< "Value" every loop in the
<< endl;
23 program).
24 // output contents of array s in tabular format
25 for ( int j = 0; j < arraySize; j++ )
26 cout << setw( 7 ) << j << setw( 13 ) << s[ j ] << endl;
27
28 return 0; // indicates successful termination
29
30 } // end main
Element Value
0 2
1 4
2 6
3 8
4 10
5 12
6 14
7 16
8 18
9 20
1
2 // Using a properly initialized constant variable.
3 #include <iostream>
4
5 using std::cout;
6 using std::endl;
7 Proper initialization of
8 int main() const variable.
9 {
10 const int x = 7; // initialized constant variable
11
12 cout << "The value of constant variable x is: "
13 << x << endl;
14
15 return 0; // indicates successful termination
16
17 } // end main
The value of constant variable x is: 7
1
2 // A const object must be initialized.
3 Uninitialized const results
4 int main() in a syntax error. Attempting
5 { to modify the const is
6 const int x; // Error: x another
must error.
be initialized
7
8 x = 7; // Error: cannot modify a const variable
9
10 return 0; // indicates successful termination
11
12 } // end main
d:\cpphtp4_examples\ch04\Fig04_07.cpp(6) : error C2734: 'x' :
const object must be initialized
1
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
24 } // end main
Total of array element values is 55
1
2 // Histogram printing 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 const int arraySize = 10;
15 int n[ arraySize ] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 };
16
17 cout << "Element" << setw( 13 ) << "Value"
18 << setw( 17 ) << "Histogram" << endl;
19
20 // for each element of array n, output a bar in histogram
21 for ( int i = 0; i < arraySize; i++ ) { Prints asterisks corresponding
22 cout << setw( 7 ) << i << setw( 13 )
to size of array element,
23 << n[ i ] << setw( 9 );
n[i].
24
25 for ( int j = 0; j < n[ i ]; j++ ) // print one bar
26 cout << '*';
27
28 cout << endl; // start next line of output
29
30 } // end outer for structure
31
32 return 0; // indicates successful termination
33
34 } // end main
Element Value Histogram
0 19 *******************
1 3 ***
2 15 ***************
3 7 *******
4 11 ***********
5 9 *********
6 13 *************
7 5 *****
8 17 *****************
9 1 *
'break’ statement
#include <iostream>
using namespace std; 1
int main() 2
{
for (int i = 1; i <= 5; i++)
{ // break condition
if (i == 3)
{
break; }
cout << i << endl;
}
return 0;
}
‘continue’ statement
#include <iostream>
1
using namespace std;
int main()
2
{ 4
for (int i = 1; i <= 5; i++) { // 5
condition to continue
if (i == 3)
{
continue; }
cout << i << endl; }
return 0;
}
Nested Loops
#include <iostream>
using namespace std;
int main()
{
* * *
int rows = 5; int columns = 3; * * *
for (int i = 1; i <= rows; ++i)
{
* * *
for (int j = 1; j <= columns; ++j)
{ cout << "* "; }
* * *
}
cout << endl; * * *
return 0;
}
Multiple-Subscripted Arrays
Multiple subscripts
– a[ i ][ j ]
– Tables with rows and columns
– Specify row, then column
– “Array of arrays”
• a[0] is an array of 4 elements
• a[0][0] is the first element of that array
Column 0 Column 1 Column 2 Column 3
Row 0 a[ 0 ][ 0 ] a[ 0 ][ 1 ] a[ 0 ][ 2 ] a[ 0 ][ 3 ]
Row 1 a[ 1 ][ 0 ] a[ 1 ][ 1 ] a[ 1 ][ 2 ] a[ 1 ][ 3 ]
Row 2 a[ 2 ][ 0 ] a[ 2 ][ 1 ] a[ 2 ][ 2 ] a[ 2 ][ 3 ]
Column subscript
Array name
Row subscript
Multiple-Subscripted Arrays
To initialize
– Default of 0
– Initializers grouped by row in braces
1 2
int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } }; 3 4
Row 0 Row 1
1 0
int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } }; 3 4
Multiple-Subscripted Arrays
Referenced like normal
cout << b[ 0 ][ 1 ]; 1 0
– Outputs 0 3 4
– Cannot reference using commas
cout << b[ 0, 1 ];
• Syntax error
Function prototypes
– Must specify sizes of subscripts
• First subscript not necessary, as with single-scripted arrays
– void printArray( int [][ 3 ] );
1
2 // Initializing multidimensional arrays.
3 #include <iostream>
4 Using namespace std; Note the format of the
5 prototype.
6
7 Note the various initialization
8 styles. The elements in
9
array2 are assigned to the
10 int main()
first row and then the second.
11 {
12 int array1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } };
13 int array2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 };
14 int array3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } };
15
16 cout << "Values in array1 by row are:" << endl;
28
32 for ( int i = 0; i < 2; i++ ) {
For loops are often used to
// for each row
33 iterate through arrays. Nested
34 for ( int j = 0; j < 3; j++ ) loops are
// output helpful
column with
values
35 cout << array1[ i ][ j ] << ' '; multiple-subscripted arrays.
36
37 cout << endl; // start new line of output
38
39 } // end outer for structure
40
41
Values in array1 by row are:
1 2 3
4 5 6
Values in array2 by row are:
1 2 3
4 5 0
Values in array3 by row are:
1 2 0
4 0 0