ICS 103: Computer Programming in C
Handout-12
Topic: 1-D
Array
Instructor:
M. Waheed Aslam.
Objectives:
·
To learn how to declare and access 1 –D array.
·
To learn how to read and print 1-D array elements.
What is array? Why array are
needed?:
·
Arrays are very useful
tools when we need to keep several values (e.g grades of students in an exam)
in memory.
·
Instead of using several
variables, we use one array variable.
·
Individual element is then
accessed by specifying its index.
Examples:
1. int a[5];
declares an array of size 5.
|
|
|
|
|
0 |
1 |
2 |
3 |
4 |
Note: In C language array index always
starts from 0
2. a[0]=10; a[1]=20;
a[2]=30; a[3]=40; a[4]=50;
Assigns values to the elements.
3. Array can also be initialised
at point of declaration:
int a[]={10, 20, 30, 40, 50};
Note: if you specify a size but give fewer values, the
remaining cells will be
initialised to zero.
Declaring and
Referencing 1-D array:
·
Till
now, to read n number of integers (or float, double, character) we use n number
of variables.
·
For example, to read say 5 integers we used 5 integer
variables say a, b, c, d, e.
·
But
with arrays we can use a single variable name to represent any number
of variables of the same data type.
·
The
individual elements in the array can be accessed by supplying an index or subscript
after the
name of the array variable in the square brackets.
·
The
array is declared like any simple variable but the size
of the array should be specified.
The first element of the array is always
referenced with the 0 index. Array elements are always numbered from 0 to
(size-1).
int
arri[10] ;
float arrf[30] ;
Here:
·
Two
arrays are declared.
·
The
array arri contains
10 integers arri[0] to arri[9]
and array arrf contains 30 floating
values arrf[0] to arrf[29].
·
The
first elements of arri and arrf are referenced as arri[0]
and arrf[0].
·
The
last elements of arri and arrf are referenced as arri[9]
and arrf[29].
·
Similarly,
the 5th element of arri can be
referenced by arri[4], the 20th element of arrf can be referenced as
arrf[19] and so on.
·
Note
that when the arrays are declared their sizes are also declared. Here the size
of arri array is 10 and the size of arrf array is 30.
·
Now,
arri[0]…arri[9] can have any integer value say arri[3] = 123, arri[7] =
34; arrf[0]…to arrf[29] can have any float value say arrf[2] = 23.56,
arrf[23] = 222.567.
The array size can also be
given by using the define statement as shown below:
#define SIZE1 10
#define SIZE2 100
int
arri[SIZE1];
float
arrf[SIZE2];
The numbers can be read
into arrays by using for loop.
Consider the following example:
float abc[25];
int i;
for
(i = 0; i < 25; ++i)
{ printf (“Enter the %d element \n”, i );
scanf ( “%f”, &abc[i]
); }
Here:
·
The
variable abc is declared as an array of size
25 consisting of float values.
·
An
integer variable i is declared to be used as a subscript for the array.
·
Next,
for loop is used starting from 0
and ending at 24 which is the range of the array abc.
·
Inside
the loop the printf statement asks the user to enter the particular element of
the array and scanf reads that element.
·
Note
that here also the address operator &
and the name of the array is used but the subscript is added so that all the
elements can be read.
·
The
%f operator is used because the array is of float type.
How to print numbers from arrays ?:
The numbers can be printed
from arrays by using for loop.
Consider the following example:
double abc[50]
;
int n ;
for (n = 0; n < 50; ++n)
{
printf (“The %dth element of
array is %lf\n”, n, abc[n]) ;
}
The printing of array is similar to reading.
Here also,
·
for loop is used starting from 0 and ending at last element 49.
·
The
%d operator is used because n is integer type and %lf is used because
array abc is of double type.
Array
Initialization:
How to initialize 1-D array
elements ?
·
Array
can be initialized in their declarations like simple variables.
·
Here
the initial values for all the elements are given in the parentheses
separated by commas.
·
Examples of this are as follows:
int vector [ 5 ]
= { 12, 67, -56, 89, 1 } ;
float xyz [ 8 ] = {1.5, 7.8, 5.6, -9.55, 0.5, 8.4} ;
char ccc [ 4 ] = {‘r’, ‘4’, ‘+’, ‘s’ } ;
int sss [
] = { 12, 45, 78 } ;
·
In
the second example:
Ø The size of array xyz is 8
but only 6 initial values are given.
Ø In this case the remaining
2 elements xyz[6] and xyz[7] will have 0 as their initial value.
·
Thus
if the initialization list is smaller
than the size the remaining elements are initialized with 0.
·
In
the last example:
Ø The size of the array is not given but from
the initialization list the size of the array is assumed as 3.
·
Now
consider the problem of initializing a
very big array of size say 400 with the same value for all the
elements.
·
It
will be very difficult to initialize all the 400 elements by using the
initialization list in the declaration.
·
To
avoid this, the initialization can be done by using the for loop.
Example: float abc[400] ;
int i;
for
(i = 0 ; i < 400 ; ++i ) { abc [ i ] = 1.0 ; }
In the above example all
the 400 elements of the array abc are initialized with the 1.0 value by using
the for loop.
Solved Problem#1:
/****************************************************************
Store five grades in an 1-D array using for loop
and print them on screen using for loop.
****************************************************************/
#include<stdio.h>
void main( )
{
float grades[5] ; //
array declaration
int i ;
printf("Please
, Enter five grades to store in array : \n");
printf("*********************************************\n");
printf("\n");
for
(i = 0; i < 5; ++i) // loop to read (or store)
five grades in array
{
printf ("Enter the %d element of array :",
i ) ;
scanf ( "%f", &grades[i] ) ;
}
for
(i = 0; i < 5; ++i) // loop to display five
grades stored by
// you in array
grades
{
printf ("\nThe %d th element of array is %lf\n", i,
grades[i]) ;
}
} // end of main
Sample Output:
Solved Problem #2:
/********************************************************************
Create three arrays. Read data into the first two of them. Subtract
each
element in the first array from the corresponding element in the
second
array. Store the differences in the third array. Print all the
arrays.
********************************************************************/
#include<stdio.h>
#define MAX_SIZE 5
void main()
{
int first[MAX_SIZE], second[MAX_SIZE],
diff[MAX_SIZE], i;
printf("\nEnter %d data items for first array
: ", MAX_SIZE);
for(i=0;i<MAX_SIZE; i++) // input first array
{ //
input first aaray
scanf("%d", &first[i] );
}
printf("\nEnter %d data items for second array : ", MAX_SIZE);
for(i=0;i<MAX_SIZE; i++) // input second array
{
scanf("%d",&second[i]);
}
for(i=0;i<MAX_SIZE; i++) // compute the
differences
{
diff[i]=second[i] - first[i];
}
printf("\n\nOutput of the arrays : ");
for(i=0;i<MAX_SIZE; i++) // output the
arrays
{
printf("\n\n%5d %5d %5d", first[i], second[i],
diff[i]);
}
} // end of main
Sample Output: