280 likes | 451 Views
Topic: Array. Arrays In this chapter, we will : Learn about arrays Explore how to declare and manipulate data into arrays Become familiar with the restrictions on array processing Discover how to pass an array as a parameter to a function Example of 1-D array
E N D
Arrays In this chapter, we will : • Learn about arrays • Explore how to declare and manipulate data into arrays • Become familiar with the restrictions on array processing • Discover how to pass an array as a parameter to a function • Example of 1-D array • Discover how to manipulate data in a two-dimensional array • Example of 2-D array • Homework
A data type is called simple if variables of that type can store only one value at a time. • A structured data type (or data structure) is one in which each data item is a collection of other data items. An array is a collection of a fixed number of components wherein all of the components are of the same data type. • A group of same data type is called array. • An array is of three types: a)One Dimensional array b)Two Dimensional array c)Multi Dimensional array one-dimensional array is an array in which the components are arranged in a list form. The general form of declaring a one-dimensional array is: DataType arrayName[intExp];
Example: The statement int list[10]; declares an array list of 10 components. Each component is of the type int. The components are list[0], list[1]… list[9].
Accessing Array Components The general form (syntax) of accessing an array component is: arrayName[indexExp] where indexExp, called index, is any expression whose value is a nonnegative integer. • Index value specifies the position of the component in the array. • In C++, [] is an operator, called the array subscripting operator. • In C++ array index starts at 0.
Processing One-Dimensional Arrays • Some of the basic operations performed on a one-dimensional array are initialize, input data, output data stored in an array, find the largest and/or smallest element. • Each of these operations requires the ability to step through the elements of the array. • Stepping-through the elements of an array is easily accomplished by a loop.
Consider a list declared as an array of the SIZE 100 • The following for loop steps-through each element of the array list starting at the first element of list. for(i = 0; i < SIZE; i++) process list[i] • If processing list requires inputting data into list, the statement in Line 2 takes the from of an input statement, such as the cin statement. • for(i = 0; i < SIZE; i++) cin>>list[i];
Finding the sum and average of an array: sum = 0; for(index = 0; index < SIZE; index ++) sum = sum + list[index]; average = sum / SIZE;
Array Problems • In C++, there is no guard against indices that are out of bounds. • Assignment, comparison of arrays, reading data into an array and printing the contents of an array must be done component-wise. cin>>x; //illegal if (x < y) …; //illegal y = x; // illegal • In order to copy one array into another array use a loop. for(j = 0; j < arraySize; j++) y[j] = x[j];
Arrays as Parameters to Functions • By Reference Only: In C++, arrays are passed by reference only. • Since arrays are passed by reference only, we do not use the symbol & when declaring an array as a formal parameter. void initialize(datatype list, int SIZE) { int count; for(count = 0; count < SIZE; count++) list[count] = 0; }
Example of 1D array To print the elements of a list in acsending order #include <iostream.h> #include <conio.h> void bubble_sort(int a[], int N) { int i, j, temp; for (i = 0; i < N; i++) for (j = 0 ; j < N-1; j++) }
if (a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; }
void main() { int A[10]; clrscr(); cout << "Enter the array elements : "; for (int i = 0; i<10; i++) cin >> A[i]; bubble_sort(A, 10); cout << "Sorted elements are : "; for (i = 0; i<10; i++) cout << A[i] << "\n"; }
Two-dimensional Arrays A two-dimensional array is a collection of a fixed number of components arranged in two dimensions, and all components are of the same type.The syntax for declaring a two-dimensional array is: DataType arrayName[intexp1][intexp2]; where intexp1 and intexp2 are expressions yielding positive integer values. The two expressions intexp1 and intexp2 specify the number of rows and the number of columns, respectively, in the array. double sales[10][5]; declares a two-dimensional array sales of 10 rows and 5 columns and every component is of the type float.
Accessing Array Components The syntax to access a component of a two-dimensional array is arrayName[indexexp1][indexexp2] where indexexp1 and indexexp2 are expressions yielding nonnegative integer values. indexexp1 specifies the row position and indexexp2 specifies the column position. The statement sales[5][3] = 25.75; stores 25.75 into row numbered 5 and column numbered 3 (that is, 6th row and 4th column) of the array sales. If int i = 5; int j = 3; then the previous statement is equivalent to sales[i][j] = 25.75;
Processing Two-dimensional Arrays A two-dimensional array can be processed in three different ways. 1. Process the entire array. 2. Process a particular row of the array, called row processing. 3. Process a particular column of the array, called column processing. When processing a particular row or column of a two-dimensional array we employ algorithms similar to when we process one-dimensional arrays.
Suppose that we want to process row number, say 5 of matrix. The components of row number 5 of matrix are:
const int ROWS = 7; const int COLUMNS = 6; int matrix[ROWS][COLUMNS]; int row; int col; int sum; int largest; int temp; //In these components the first index is fixed at 5. row = 5; //The second index ranges from 0 to 5. for(col = 0; col < COLUMNS; col++) process matrix[row][col]
Similarly, suppose that we want to process column number 2 of matrix, that is, the third column of matrix. The components of this column are:
The second index is fixed at 2 and the first index ranges from 0 to 6. • The following for loop processes column 2 of matrix. col = 2; for(row = 0; row < ROWS; row++) process matrix[row][col]
Print The following nested for loops print the components of matrix, one row per line. for(row = 0; row < ROWS; row++) { for(col = 0; col < COLUMNS; col++) cout<<setw(5)<<matrix[row][col]<<" "; cout<<endl; }
Passing Two-dimensional Arrays as Parameters to Functions • Two-dimensional arrays can be passed as parameters to a function and they are passed by reference. • When storing a two-dimensional array in the computer’s memory, C++ uses the row order form. That is, first the first row is stored, followed by the second row, which is followed by the third row and so on. void initialize(datatype table) { int row; int col; for(row = 0; row < ROWS; row++) for(col = 0; col < COLUMNS; col++) table[row][col] = 0; }
Example of 2-D array To print Sum of Column of a matrix void Col_sum(int R[7][7]) { int sum, i, j; for (i=0; i<7; i++) { sum = 0; for (j = 0; j<7; j++) sum = sum + R[j][i]; cout << "Sum of Column : " << i+1 << " is : " << sum << endl; } }
void main() { clrscr(); int ar[7][7]; int i, j; for (i=0; i<7; i++) for (j = 0; j<7; j++) cin >> ar[i][j]; Col_sum(ar); }
Homework • Write a program in C++ to arrange the elements of a list in descending order. (1-D array). • Write a program in C++ to enter elements in 2-D matrix (3x3) and display the matrix on the output screen.