Вы находитесь на странице: 1из 22

COMPUTER PROGRAMMING

LECTURE # 8: ARRAY - A

BSE 1
Joddat Fatima
1
joddat.fatima@gmail.com

Department of C&SE
Bahria University Islamabad
BASICS

 In daily life we commonly group similar elements in units.


 Cans of pine juices
 Dozen bananas
 Cartoon of eggs

 In programming we need group of data items of same type as


well so to accomplish that most basic concept of arrays is
used in C++

2
INTRODUCTION

 Array
 Consecutivegroup 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

An array is a series of elements of the same type placed in


contiguous memory locations that can be individually 3
referenced by adding an index to a unique identifier.
DECLARATION OF ARRAY

 When declaring arrays, specify


 Name
 Type of array
 Number of elements

type arrayName[ arraySize ];

Example:

int c[ 10 ]; // array of 10 integers


float d[ 3284 ]; // array of 3284 floats

4
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
 If too many syntax error

 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 5
ARRAY VARIABLE TYPE
 An array can have indexed variables of any type
 All indexed variables in an array are of the same type
 An indexed variable can be used anywhere an ordinary variable
of the base type is used

ARRAY [] USAGE
 In an array declaration, [ ]'s enclose the size of the array
 When referring to one of the indexed variables, the [ ]'s enclose
a number identifying one of the indexed variables
 The value in the [ ]'s can be any expression that evaluates to one
6
of the integers
VARIABLES & DECLARATION

 Most compilers do not allow the use of a variable


to declare the size of an array

 Example:
cout << "Enter number of students: ";
cin >> number;
int score[number];

 This code is illegal on many compilers


7
ARRAY OUT OF RANGE

 A common error is using a nonexistent index


 Index values for int a[6] are the values 0 through 5
 An index value not allowed by the array declaration is out of range
 Using an out of range index value doe not produce an error message!

 Problems
 Array declared as int a[6]; int i=7; executing the statement a[i] = 238;
causes…
 The computer to calculate the address of the illegal a[7]
(This address could be where some other variable is stored)
 The value 238 is stored at the address calculated for a[7] 8
 No warning is given!
EXAMPLE-1

#include <iostream> OUTPUT


0
int main() 0
{ 0
int n[ 10 ]; // n is an array of 10 integers 0
0
// initialize elements of array n to 0 0
for ( int i = 0; i < 10; i++ ) 0
0
n[ i ] = 0; // set element at location i to 0 0
for ( int j = 0; j < 10; j++ ) 0

cout<<n[ j] <<endl; // print all elements


return 0;
}

9
EXAMPLE-2

#include <iostream>
int main() OUTPUT
32
{ 27
// use initializer list to initialize array n 64
int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 }; 18
95
for ( int i = 0; i < 10; i++ )
14
cout << n[ i ] << endl; 90
return 0; 70
60
}
37

10
ARRAY SIZE & EXAMPLE
 Array size
 Can be specified with constant variable (const)
 const int size = 20;

 Constants cannot be changed


 Constants must be initialized when declared

 Example OUTPUT
#include <iostream> 2
int main() 4
{ 6
8
const int arraySize = 10;
10
int s[ arraySize ]; 12
for ( int i = 0; i < arraySize; i++ ) 14
s[ i ] = 2 + 2 * i; 16
18
for ( int j = 0; j < arraySize; j++ )
20 11
cout << << s[ j ] << endl;
return 0;}
EXAMPLE
#include <iostream>
int main()
{
const int arrSize = 10;
int a[ arrSize ] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int total = 0;
for ( int i = 0; i < arrSize; i++ )
total += a[ i ];
cout << "Total of array element values is " << total <<
endl;
return 0;
12
} Total of array element values is 55
Element Value Histogram
0 19 *******************
1 3 ***
EXAMPLE 2 15 ***************
3 7 *******
4 11 ***********
5 9 *********
#include <iostream> 6 13 *************
#include <iomanip> 7 5 *****
int main() 8 17 *****************
{ 9 1 *

const int arraySize = 10;


int n[ arraySize ] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 };
cout << "Element" << setw( 13 ) << "Value"<< setw( 17 ) << "Histogram" << endl;

for ( int i = 0; i < arraySize; i++ )


{
cout << setw( 7 ) << i << setw( 13 ) << n[ i ] << setw( 9 );
for ( int j = 0; j < n[ i ]; j++ ) // print one bar
cout << '*';
cout << endl;
}
return 0; 13
}
STRING ARRAYS

 Strings
 Arrays of characters
 All strings end with null ('\0')
 Examples
 char string1[] = "hello";

 Null character implicitly added

 string1 has 6 elements

 char string1[] = { 'h','e','l','l','o','\0’ };

 Subscripting is the same

String1[ 0 ] is 'h'
string1[ 2 ] is 'l'

14
STRING ARRAYS
 Input from keyboard
char string2[ 10 ];
cin >> string2;
 Puts user input in string
 Stops at first whitespace character

 Adds null character

 If too much text entered, data written beyond array


 We want to avoid this (section 5.12 explains how)

 Printing strings
 cout << string2 << endl;
 Does not work for other array types

 Characters printed until null found

15
STRING ARRAYS EXAMPLE
Enter the string "hello there": hello there
string1 is: hello
#include <iostream>
string2 is: string literal
int main()
string1 with spaces between characters is:
{ hello
char string1[ 20 ];
char string2[] = "string literal";

cout << "Enter the string \"hello there\": ";


cin >> string1;
cout << "string1 is: " << string1 << "\nstring2 is: " << string2;
cout << "\nstring1 with spaces between characters is:\n";

for ( int i = 0; string1[ i ] != '\0'; i++ )


cout << string1[ i ] << ' ';
return 0; 16
}
ARRAY WITH FUNCTIONS

17
PASSING ARRAYS TO FUNCTIONS

 Specify name without brackets


 To pass array myArray to myFunction
int myArray[ 24 ];
myFunction( myArray, 24 );
 Array size usually passed, but not required
 Useful to iterate over all elements

18
PASSING ARRAYS TO FUNCTIONS

 Arrays passed-by-reference
 Functions can modify original array data
 Value of name of array is address of first element
 Function knows where the array is stored
 Can change original memory locations

 Individual array elements passed-by-value


 Likeregular variables
 square( myArray[3] );

19
PASSING ARRAYS TO FUNCTIONS

 Functions taking arrays


 Function prototype
 void modifyArray( int b[], int arraySize );
 void modifyArray( int [], int );

 Names optional in prototype

 Both take an integer array and a single integer

 No need for array size between brackets


 Ignored by compiler
 If declare array parameter as const
 Cannot be modified (compiler error)
 void doNotModify( const int [] );

20
EXAMPLE
#include <iostream>
void modifyArray( int [], int );
void modifyElement( int );
int main()
{
const int arraySize = 5;
int a[ arraySize ] = { 0, 1, 2, 3, 4 };
cout << "Effects of passing entire array by reference:" << "\n\nThe values of the original array are:\n";
for ( int i = 0; i < arraySize; i++ )
cout << a[ i ];
cout << endl;
modifyArray( a, arraySize );
cout << "The values of the modified array are:\n";
for ( int j = 0; j < arraySize; j++ )
cout << a[ j ];
cout << "\n\n\n"<< "Effects of passing array element by value:"<< "\n\nThe value of a[3] is " << a[ 3 ]
<< '\n';
modifyElement( a[ 3 ] );
cout << "The value of a[3] is " << a[ 3 ] << endl;
return 0; 21
}
EXAMPLE CONST..

void modifyArray( int b[], int sizeOfArray ) Effects of passing entire array by reference:

{  

for ( int k = 0; k < sizeOfArray; k++ ) The values of the original array are:
b[ k ] *= 2; 0 1 2 3 4
} The values of the modified array are:
0 2 4 6 8
void modifyElement( int e )  
{  
cout << "Value in modifyElement is “ Effects of passing array element by value:
<< ( e *= 2 ) << endl;  
} The value of a[3] is 6
Value in modifyElement is 12
The value of a[3] is 6

22

Вам также может понравиться