0% found this document useful (0 votes)
13 views

Array

Uploaded by

Ganesh
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

Array

Uploaded by

Ganesh
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

Arrays

PGT 106 : C PROGRAMMING 1


Outline
1. Introduction
2. Arrays of Data
3. Array Declaration
4. Array Initialization
5. Operations on Array
6. Multidimensional Arrays
7. Index out of bound
PGT 106 : C PROGRAMMING 2
What is an Array?
 An array is a collection/group of a fixed number of
components wherein all of the components are of the
same type referred to a same name

PGT 106 : C PROGRAMMING 3


What is an Array? (Example)
 Example: 5, 10, 15, 20, and 25.

 Previously we would declare five


variables:
int iNum1, iNum2, iNum3, iNum4, iNum5;

 By using array,
int aiNum[5];
PGT 106 : C PROGRAMMING 4
What is an Array? (Example)
aiNum  5 components or
elements
5 aiNum[0]
10 aiNum[1]  Elements are referred to
index.
15 aiNum[2]
20 aiNum[3]  Element aiNum[2] has
index 2 and value 15.
25 aiNum[4]

PGT 106 : C PROGRAMMING 5


Arrays of Data
 Engineering applications usually involve large
chunk of data (of common type)
 Arrays provide easy and efficient concept for
data storage or management
 Arrays are usually processed through loops
(processing is very common)
 Arrays are accessed by indicating an address
or index/subscript

PGT 106 : C PROGRAMMING 6


Arrays in C
 Arrays can take any type (including the
primitive data types)
int, char, string, double, float, etc.
 Like any other instances, arrays must
be declared before use.

PGT 106 : C PROGRAMMING 7


Array Declaration
 Format:
 data_type array_name [int value];

 int aiList[5];  const int Max_List_Size = 6;


char acAlp[Max_List_Size];
 const int Max_Size = 10;
int aiHours[Max_Size];  #define N 10
double adB[N];
 const int SIZE = 100;
double adAmount[SIZE];

PGT 106 : C PROGRAMMING 8


Multiple Instances vs. Array
// multiple instance
int iValue1, iValue2, iValue3, printf (“Enter fourth value: “);
iValue4, iValue 5; scanf(“%d”, &iValue4)

printf (“Enter first value: “); printf (“Enter fifth value: “);
scanf (“%d”, &iValue1); scanf(“%d”, &iValue5)

printf(“Enter second value: “);


scanf(“%d”, &iValue2);

printf (“Enter third value: “);


scanf(“%d”, &iValue3);

PGT 106 : C PROGRAMMING 9


// array
int aiValue[3];

for(int iCount=0; iCount<3; iCount++)


{
printf (“Enter value : ”);
printf (“%d : ”, iCount+1);
scanf (“%d”, &aiValue[iCount]);
}

UniMAP Sem II -
09/10 PGT 106 : C PROGRAMMING 10
Arrays - Memory Allocation
 Arrays are allocated int aiValue[8]; index aiValue
aiValue[0]=23; 0 23
bulk memory
aiValue[1]=56; 1 56
 Single reference used aiValue[2]=100; 2 100
for multiple locations aiValue[3]=0; 3 0

 Items are accessed aiValue[4]=12; 4 12


aiValue[5]=234; 5 234
based on index
aiValue[6]=666; 6 666
(address) with aiValue[7]=4; 7 4
reference to first item

PGT 106 : C PROGRAMMING 11


Arrays Arithmetic
 Operations on arrays are similar to that on
basic variables.
 iSum = aiNum[0] + aiNum[1] + aiNum[2]
+ aiNum[3];
 iMult = 3 * aiNum[1];
 iRemainder = aiNum[3] % 3;
 iTotal = aiNum[1] * aiNum[2];

PGT 106 : C PROGRAMMING 12


Array Initialization
 Arrays can be initialized directly, but assignments are
done using loops
 Like any other simple variable, arrays can also be
initialized while they are being declared.
double adSales[5] = {12.25, 32.50, 16.90, 23, 45.68};
adSales[0]=12.25, adSales[1]=32.50,
adSales[2]=16.90, adSales[3]=23.00,
adSales[4]=45.68;

PGT 106 : C PROGRAMMING 13


Array Initialization (cont…)
 Initializers:
 If not enough initializers, rightmost element becomes 0

int aiN[ 7 ] = { 1, 2, 3, 4, 5 }; => aiN[5] = aiN[6] = 0


 All elements = 0

int aiN[ 5 ] = { 0 } ;
▪ If size is omitted, initializers determine the size
int aiN[ ] = { 1, 2, 3, 4, 5 };
5 initializers, therefore 5 element array

PGT 106 : C PROGRAMMING 14


Sample Program
Initializes the first 2 elements of the
Because no array size is given (the
#include <stdio.h> aiA[]array. All the other elements are
brackets are empty) and three values are
int main() then automatically set to zero given in braces, the array is
automatically declared to have a size of
{ 3 with the value shown being the initial
int aiA[3]= {11,22}, aiB[]={44, 55, 66},iLoop; element values.
double adX[2],adY[10];

printf(“aiA[0]=%2d, aiA[1]=%2d, aiA[2]=%2d \n"


“aiB[0]=%2d, aiB[1]=%2d, aiB[2]=%2d \n\n",
aiA[0],aiA[1],aiA[2],aiB[0],aiB[1],aiB[2]);

printf("Please enter two real numbers\n");


scanf("%lf %lf",&adX[0], &adX[1]);
printf(“adX[0] = %.1lf adX[1] = %.1lf\n\n", adX[0], adX[1]);

for (iLoop=0;iLoop<10;iLoop++)
{ Using a loop to fill all the
adY[iLoop]= iLoop*100.0; elements of the adY[] array.
printf(“adY[%1d]=%.2lf\n", iLoop, adY[i]);
}
return 0;
}

PGT 106 : C PROGRAMMING 15


Sample Program
 Output:

aiA[0]=11, aiA[1]=22, aiA[2]= 0


aiB[0]=44, aiB[1]=55, aiB[2]=66

Please enter two real numbers


77.0 88.0
adX[0] = 77.0 adX[1] = 88.0

adY[0]=0.00
adY[1]=100.00
adY[2]=200.00
adY[3]=300.00
adY[4]=400.00
adY[5]=500.00
adY[6]=600.00
adY[7]=700.00
adY[8]=800.00
adY[9]=900.00

PGT 106 : C PROGRAMMING 16


Array Initialization During
Declaration
 When declaring and initializing arrays, it is not
necessary to specify the size of the array.
 The size of the array is determined by the
number of initial values in the braces.
double adSales[] = {12.25, 32.50, 16.90, 23, 45.68};

PGT 106 : C PROGRAMMING 17


A simple example
 The program declares and initializes the
array aiY. It uses a ‘for’ loop with index iLoop
to access the successive elements of aiY. For
each loop iteration, the value accessed id is
added to the variable iTotal which is finally
displayed. Note that the loop index iLoop
starts from 0 to 4 (not from 1 to 5). Also,
note that the array size n is declared in the
define statement.
PGT 106 : C PROGRAMMING 18
A simple example (cont..)
#include<stdio.h>
#define n 5 // define number of n in the array

void main()
{
int iLoop, iTotal = 0; // variable declaration
int aiY[n]={9,6,20,5,12}; // array declaration and
// initialization
for (iLoop=0;iLoop<n;iLoop++)
iTotal = iTotal + aiY[i];
printf ("\nTotal = %d\n”, iTotal);
}

PGT 106 : C PROGRAMMING 19


Notes
 The defined constants, #define is used to ease
any future amendments of the codes, for
instance, if the array is to be widen to an n of 10
instead of 5, it would be adequate by modifying
the line:
#define n 5  #define n 10
there is no need to make any other changes to
the program, thus making the life of programmer
easier.
PGT 106 : C PROGRAMMING 20
Operations on Array
 Reading data in an array
for (iIndex = 0; iIndex < 10; iIndex++)
scanf (“%d”, &aiSale[iIndex]);

 Printing an array
for (iIndex = 0; iIndex < 10; iIndex++)
printf (“%d ”, aiSale[iIndex]);
PGT 106 : C PROGRAMMING 21
Parallel Arrays
 Two (or more) arrays are called
parallel if their corresponding
components hold related information.
int aiStudentId[50];
char acStudentGrade[50];

PGT 106 : C PROGRAMMING 22


Multi-Dimensional Arrays
 Arrays can have multiple dimensions
 Most used is the 2-dimensional array
(for matrix implementation)
 Actual implementation is a single array
(segmented)
 Nested loop structure usually used to
access items

PGT 106 : C PROGRAMMING 23


2-Dimensional Array
(Example)
int aiValue[4][2];
index aiValue
0
aiValue[2][1]=5; Row 0
1
Column
2
0 1 Row 1
3
0
4
1
Row 5 5
2 5 6
3
7

Address Resolution = Row*(MaxCol) + Col

PGT 106 : C PROGRAMMING 24


Multi-Dimensional Arrays
(cont..)
 A collection of the same type of data
stored in contiguous and increasing
memory locations.
 Declaration of multi-dimensional array:
array_type array_name Array dimension = 2

 int aiB[2][3] = {51, 52, 53, 54, 55, 56};


two rows
three columns first row second row
initial values initial values

PGT 106 : C PROGRAMMING 25


Multi-Dimensional Arrays
(cont..)
 Multi-dimensional array can be initialized directly in
the declaration statement.
 For example:
 int aiB[2][3] = {51, 52, 53, 54, 55, 56};
which initializes the elements to be
aiB[0][0] = 51 aiB[0][1] = 52 aiB[0][2] = 53
aiB[1][0] = 54 aiB[1][1] = 55 aiB[1][2] = 56
* note that C begins its subscripts at 0. The rightmost
subscript is incremented first.

PGT 106 : C PROGRAMMING 26


Multi-Dimensional Arrays
(cont..)
 can use braces ({ }) to separate rows in 2-dimensional arrays.
 For example: 3 columns

 int aiC [4][3] = {{1, 2, 3},


{4, 5, 6},
rows {7, 8, 9}, 4 rows
columns
{10,11,12}};
 int aiC [4][3] = {{1, 2},
{4, 5, 6},
{7},
{10,11,12}};
initializes aiC[0][2], aiC[2][1] and aiC[2][2] to be zero
 int aiC [ ][3] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
{10,11,12}};
implicitly declares the number of rows to be 4

PGT 106 : C PROGRAMMING 27


Notes on Arrays
 Arrays enable better and easier data
management system
 Closely related to loops
 Indexing is zero-based
(0 to n-1 for an array with n locations)
 Multi-dimensional arrays require
nested loop structure
(e.g. 2-dimensional array)
PGT 106 : C PROGRAMMING 28
Index out of bounds
 ‘Out of bounds’ is when (index < 0) or
(index > arraySize - 1)
 It is a run-time error, happens when an
index is outside the valid boundaries of the
array. Example:
int aiA[10]; int iX = 10
aiA[9] = 3 ; //ok
aiA[iX] = 4 ; //10 is not within the range 0..9
PGT 106 : C PROGRAMMING 29
Index out of bound
 In C, no guard against this problem
 Does not check whether index value is
within range or not
 Can result in accessing data of wrong
memory location

PGT 106 : C PROGRAMMING 30


How to overcome?
 Use defined loops

for (iLoop = 0; iLoop < 10; iLoop ++)


aiList [ iLoop ] = 0;

PGT 106 : C PROGRAMMING 31


End – Arrays (1)

Q & A!

PGT 106 : C PROGRAMMING 32

You might also like