0% found this document useful (0 votes)
3 views20 pages

Module 3 Notes Arrays

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
0% found this document useful (0 votes)
3 views20 pages

Module 3 Notes Arrays

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

Module 3

Arrays
One Dimensional Array
1. WHY DO WE NEED ARRAYS?
Say we have a problem in our hand to store marks scored by 50 students in C language subject. To
store 50 marks we have to declare 50 variables of integer data type as shown below:
int marks_1, marks_2, marks_3, marks_4… .................... marks_50;

Now suppose we have to store values into these variables then 50 scanf statements or initializing 50
values has to be done as shown:
scanf(“%d”, &marks_1);

scanf(“%d”, &marks_2);

scanf(“%d”, &marks_3);

scanf(“%d”, &marks_50);
OR
marks_1=25;
marks_2=23;
marks_3=20;
…………. So on marks_50=21;

marks_1 25 marks_2 23 marks_3 20

marks_4 15 So on………………. marks_50 21

This style of programming is fine for a small set of values. But if we have to store 1000 or
10000 values declaring so many variables is a cumbersome process. Alternative solution is Arrays!

2. DEFINITION OF ARRAYS

PSP NOTES,MODULE 3 PALLAVI K N


The array is a fixed-size sequenced collection of elements of same data type.
The array is a collection of homogeneous elements of same data type.
Array groups the data items of similar types sharing the common name.
Arrays are called as subscripted variables because; it is accessed using
subscripts/indexes.
Ex: 1. List of employees in an organization.
2. List of products and their cost sold by a store.
3. Test scores of a class of students.

Here marks[0]=10, marks[1]=20, marks[2]=30 and marks[3]=40. This


subscript/index notation is borrowed from Mathematics where we have the practice of
writing: marks4, marks3, marks2 and so on.
In C the array index starts with 0.

3. TYPES OF ARRAYS

I. One dimensional arrays/Single-Subscripted Variable


II. Two dimensional arrays/Double-Subscripted Variable
III. Multidimensional arrays

I. One-Dimensional Arrays: A list of items can be given one variable name using
only one subscript and such a variable is called a single subscripted variable or one
dimensional array.

Ex: int marks[4];


➢ Here marks is the name of the array which is capable of storing 4 integer values.
The first value will be stored in marks[0], the second value will be stored in marks[1]
and so on and the last value will be in marks[3].
PSP NOTES,MODULE 3 PALLAVI K N
Declaration of One-Dimensional Array: Here is general syntax for array declaration
along with examples.

Initialization of One-Dimensional Array: After array is declared, next is storing


values in to an array is called initialization. There are two types of array initialization:
1. Compile-time initialization
2. Run-time initialization

a) Compile time initialization: If we assign values to the array during declaration


it is called compile time initialization. Following are the different methods of
compile time initialization.
b) Initialization with size
c) Initialization without size
d) Partial initialization
e) Initializing all values zero

a) Initialization with size: we can initialize values to all the elements of the array.
Syntax: data_type array_name[size]={list of values};
Examples: int marks[4]={ 95,35, 67, 87};
float temperature[5]={29.5, 30.7, 35.6, 45.7, 19.5};

b) Initialization without size: We needn’t have to specify the size of array provided
we are initializing the values in beginning itself.
Syntax: data_type array_name[ ]={list of values};
Examples: int marks[ ]={ 95,35, 67, 87};
float temperature[ ]={29.5, 30.7, 35.6, 45.7, 19.5};

PSP NOTES,MODULE 3 PALLAVI K N


Partial initialization: If we not specify the all the elements in the array, the unspecified
elements will be initialized to zero.
Example: int marks[5]={10,12,20};
Here, marks[3] and marks[4] will be initialized to zero.

c) Initializing all the elements zero: If we want to store zero to all the elements
in the array we can do.
Examples: int marks[4]={0};
float temperature[5]={0};

1. Run time initialization: Run time initialization is storing values in an array


when program is running or executing.
Following example illustrates run time storing of values using scanf and for loop:
Example:
printf(“Enter the marks”); for(i=0; i<4;
i++)
{
scanf(“ %d”, &marks[i]);
}
Note: Every iteration of for loop will help us to fill values into marks array (i.e.
marks[0]=95, marks[1]=35, marks[2]=67, marks[3]=87)

Accessing the array elements: Accessing the array element is done using a loop
statement in combination with printf statements or any other processing statements.
Example of accessing the array elements and calculating total marks is given below:
Example: void
main( )
{

int total=0,
marks[4]={35,44,55,67};
PSP NOTES,MODULE 3 PALLAVI K N
for(i=0; i<4; i++)
total=total+marks[i]; /* calculating total
marks*/ printf(“Total marks=%d”,total);
}
Output: Total marks=201
USING ARRAYS WITH FUNCTIONS:
In large programs that use functions we can pass Arrays as parameters. Two ways of
passing arrays to functions are:
1. Pass individual elements of array as parameter
2. Pass complete array as parameter

Let us take an example program that uses a function square( ) to calculate square of
numbers stored in an array. In this program each array element is passed one by one.
Example-1
Example-1 cont’d:
int square(int);
void main( ) void square(int no )

{ {

int num[5], i; int sq;

num[5] ={3,4, 8, 9, 10}; sq=no*no; /*square is calculated*/

for(i=0; i<5; i++) printf(“square is=%d ”, sq);

}
{
square(num[i]);
} Output:

Square is=9 16 64 81 100


This diagram clearly illustrates how each individual element of array num[ ] is passed to
function square through parameter no.

3 4 8 9 10
0 1 2 num[3]=9→ no
3 4
num[1]=4 copied → no

num[0]=3 copied to no
num[2]=8→ no

PSP NOTES,MODULE 3 PALLAVI K N


Next program illustrates how to pass an entire array to a function average( ) andcalculate average marks. First
sum of all the elements of array marks.

(i.e.35+65+75+95+85) is calculated and average is stored in a variable avg. value in


avg
variable is returned to main( ) and stored in avg1

Example-2: Example-2 cont’d:

float average(int score[]); float average(int score[ ] )


void main( ) {
{ int i , sum=0;
float avg;
int marks[5], i
float avg1; for(i=0; i<5;i++)

marks[5] ={35,65, 75, 95, 85}; {

avg1=average(marks); sum=sum+score[i];

printf(“average=%f”, avg1) }

} avg=sum/5;
return (avg);

Output:

average=71.000000

PSP NOTES,MODULE 3 PALLAVI K N


In the above example each value of array marks[ ] is copied to array scores[ ] as shown
below

marks[0]=35 copied to scores[0]

marks[1]=65 copied to scores[1]

marks[2]=75 copied to scores[2]

marks[3]=95 copied to scores[3]

marks[4]=85 copied to scores[4]

using these values average is calculated:


(35+65+75+95+85)/5=

71.000000

II. Two-Dimensional Arrays: A list of items can be given one variable name using two
subscripts and such a variable is called a single subscripted variable or one dimensional
array.

➢ It consists of both rows and columns. Ex: Matrix.

Declaration of Two-Dimensional Array: Here is general syntax for array declaration


along with examples.

Initialization of Two-Dimensional Array: After array is declared, next is storing


values in to an array is called initialization. There are two types of array initialization:
1. Compile-time initialization
2. Run-time initialization

PSP NOTES,MODULE 3 PALLAVI K N


1. Compile time initialization: If we assign values to the array during declaration
it is called compile time initialization. Following are the different methods of compile
time initialization.

➢ After initialization the arrays appear as follows:

1 2 3 4
marks 5 6 7 8
9 10 11 12

29.5 30.7
city_temper
35.6 45.7

2. Run time initialization: Run time initialization is storing values in an arraywhen program is
running or executing.
Following example illustrates run time storing of values using scanf and for loop:

Example:

printf(“Enter the marks”);

for(i=0; i<3; i++)

for(j=0;j<4;j++)
{
scanf(“ %d”, &marks[i][j]);
}

PSP NOTES,MODULE 3 PALLAVI K N


More Examples: Other way of initialization:
int a[ ][3]= { 0, 1, 2, 3,4,5,6,7,8};
int b[ ][4] ={1,2,3,4,5,6,7,8,9,10,11,12};

012 1234

345 b 5678
a
67 8 9 10 11 12

Example for Invalid initialization


int A[3][ ]={1,2,3};

Note: Never have column size undeclared in two-dimensional array.


1. OPERATIONS PERFORMED ON ONE_DIMENSIONAL ARRAY
SORTING: It is the process of arranging elements in the list according to their values
in ascending or descending order. A sorted list is called an ordered list.
Ex: Bubble Sort, Selection Sort
Bubble Sort
Bubble sort will start by comparing the first element of the array with the second
element, if the first element is greater than the second element, it will swap both the
elements, and then move on to compare the second and the third element, and so on.

Refer Lab Program

Selection Sort

Selection sort will start by comparing the first element with other elements and finds
minimum element and swaps, then it starts comparing by taking second element with
other elements and so on.

void main( )
{
int a[100],i,j,n,temp,pos;

PSP NOTES,MODULE 3 PALLAVI K N


printf("Enter the value of n\n");
scanf("%d",&n);
printf("Enter the numbers in unsorted order:\n");
for(i=0;i<n;i++)
scanf("%d", &a[i]);
for(i=0;i<n;i++)
{
pos=i; for(j=i+1;j<n;j++)
{
if(a[pos]>a[j])
pos=j;
}
if(pos !=i )

{
temp=a[i];
a[i]=a[pos];
a[pos]=temp;
}
}
printf("The sorted array is\n");
for(i=0;i<n;i++)
printf("%d\n",a[i]);
}

SEARCHING: It is the process of finding the location of the specified element in a list.
➢ The specified element is often called the search key.
➢ If it is found search is successful, otherwise it is unsuccessful.
Ex: Binary Search, Linear Search/Sequential Search.
Linear Search

Linear search is a very basic and simple search algorithm. In Linear search, we search
an element or value in a given array by traversing the array from the starting, till the
desired element or value is found.

PSP NOTES,MODULE 3 PALLAVI K N


#include<stdio.h>
#include<stdlib.h>
void main( )
{
int n, a[100], i,
key,loc; loc=-1;
printf("Enter the size of the array\n");
scanf("%d",&n);
printf("Enter the elements of array in sorted order\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Enter the key element to be
searched\n"); scanf("%d",&key);
for(i=0;i<n;i++)
{
if(key == a[i]
{
loc=i+1;
break;
}
if(loc>=0)
printf("The element %d is found at %d \n",ele,loc);
else
printf("The search is unsuccessful\n");
}

Binary Search
Binary search works only on a sorted set of elements. To use binary search on a
collection, the collection must first be sorted. The array is divided into two parts,
compared with middle element if it is not successful, then it is compared whether it is
lesser or greater than middle element. If it is lesser, search is done towards left part else
right part.

Refer Lab Notes for Binary search program

PSP NOTES,MODULE 3 PALLAVI K N


STRING CONCEPTS

Definition: String is a variable length data stored in a character array.


Example: “hello”, “India”
I. C- strings
➢ In C a string is a data structure based on an array of char.
➢ A string is a sequence of elements of the char data type.
➢ There is no separate data-type called string in C language.
➢ As strings are variable-size data we have to represent them using character
Arrays.
Example string is:

A N A G H A \0 Delimiter
‘\0’ indicates
0 1 2 3 4 5 6
end of string

Strings in C are classified into two types:


1. String literals
2. String variables
String literals are also known as string constants, is a sequence of characters enclosed
by double quotation marks is called string literals. A string literal is a constant its value
cannot be changed. Some examples are:
Examples: “BENGALURU”, “I Love India” etc.
String variables are nothing but character array. Following syntax and examples
illustrates declaring string variables.
Example: char array_name[ ]= “Jin”;

How string is stored?


➢ A string, even a literal one is very similar to an array of characters.
➢ The only difference between array of char and string is that, a string must
end with null character (\0).

PSP NOTES,MODULE 3 PALLAVI K N


➢ If you use a literal string in a program, it is stored in consecutive bytes in
memory and compiler places the null character at the end.
➢ Below fig shows storage for literal string “KSIT”
K S I T \0

Declaring string variables: A string is declared like an array of characters.

Syntax: char string_name[size];

Ex: char name[21];

Size 21 means it can store up to 20 characters plus the null character. Entire storage location name is
divided in to 21 boxes called bytes, each of which holds one character. Each character is element of
data type char.

Initializing the string in the declaration


char first[10]={‘t’,’a’,’b’,’l’,’e’,’\0’};
char second[10]=”table”;

Difference between a single character string and a single character array is:
Single character array takes 1 byte whereas single character string occupies two bytes as shown below:

A \0 Single character string

‘A’ 25

Limitations of Strings: One string variable cannot be directly assigned to another string as in the case
of ordinary scalar variables.
Let us say int a=10, b;
b=a; /* is perfectly valid */
But take an example of string initialization:
char name1[ ] = “hello”;
char name2[10 ];
name2=name1; /* This initialization is invalid */

But this initialization can be done using a loop and assigning individual characters ofname1 to name2
as shown below:

PSP NOTES,MODULE 3 PALLAVI K N


void main( )
{
int char name1[ ]= “hello”;
int char name2[5];
for (int i=0; i<4;i++)
{
name2[i] =name1[i];
}
name2[i]= ‘\0’;
}

Printing and reading a string: Token oriented input/output function


Printing a string using printf: We can use printf function with %s format specifier to print a string
on to the monitor. The %s is used to display an array of characters that is terminated by null character.
Example:

(1) char name[10]=”Deeksha”;


printf(“the name is %s\n”,name);
o/p: the name is Deeksha

(2) char name[ ]= “MANGALORE”;


printf(“%s”, name);
printf (“%9.6s”, name);
printf(“%-10.3s”, name);
M A N G A L O R E %s prints entire string

M A N G A L %9.6s prints first 6 characters out


of 9 characters

M A N
Prints first 3 characters but in left
justified manner because of (- ) sign

Reading a string using scanf( )


It uses string conversion specifier %s to accept a string data. Following example

PSP NOTES,MODULE 3 PALLAVI K N


illustrates it:
char name[20];
scanf(“%s”, name);
Note: while reading strings we needn’t specify address of operator (&) as the character
array itself is an address (i.e name itself is base address of array in the above example)

Disadvantage of reading strings using scanf( ) function is multiple words strings cannot
be read. For example say we have to read NEW DELHI, following scanf( ) reads only
NEW and stops.

scanf(“%s”,

name); say
N E W D E L H I
input is

Only part of a string (NEW) is read and second half (DELHI) is ignored.

N E W

Edit set Conversion code %[ ]: In addition to %s we can also use edit set conversion
code %[ ], which specifies the type of characters that can be accepted by scanf ( )
function.

For Example say we have to accept only 0-9 digits in a string then edit set code can
be used as follows:
char name[20];
scanf(“%[0123456789]”, name)

Example strings that will be read by above statement are:


12345, 123, 567, 7890 etc.

NOTE: Suppose we want to skip particular set of characters in a string, then we have
to use:
^ symbol in edit set conversion code. Following example illustrates same:
PSP NOTES,MODULE 3 PALLAVI K N
Example 1:
char name[20];
scanf(“%[^A-Z]”, name)

This function skips all Capital alphabets from a


string. Say string is APPLE, banana, Mango
Accepted words are: banana, ango
Example 2:
Char name[20];
Scanf(“%[^\n]”,name);

This function will read a line of characters including white space.

II. String manipulation function:

C library supports a large number of string handling functions that can be used to
carry out many of the string manipulations and are stored in header file “string.h”.
Following are the most commonly used string handling functions.
1. strcpy( ) copies one string over another
2. strlen( ) finds the length of a string
3. strcmp( ) compare two strings
4. strcat( ) concatenates two strings
5. strcpy( ) copies left most n characters of source to destination
6. strcmp( ) compares left most of n characters of source to destination.

1. strcpy( ): It is possible to assign a value to a string variable using strcpy( ). It


allows us to copy a string from one location to another. The string to be copied can be
literal or string variable. The general form of call to strcpy is
strcpy(dest,source);
Strcpy() function has two parameters. The first is the dest, a string variable whose value
is going to be changed. The second is the source the string literal or variable which is
going to be copied to the destination.
Ex: char first[14];

PSP NOTES,MODULE 3 PALLAVI K N


char last[14];
strcpy(first,”ravi kumar”);
strcpy(last,first);
After two calls to strcpy, first and last each has a value “Ravi kumar”
A call to strcpy can be used to copy just part of a string. Either or both of the parameters
can refer to addresses past the beginning of their strings.
Ex: char name[20]=”Ravi kumar”; char
newname[20]=”Lee Davis”;
strcpy(name+5,newname+4);

Strcpy does not check to see whether there is room for the resulting string at the specified
location. If there is no room, it copies characters on top of whatever variables follow in
memory. This may destroy the contents of other variables.
1. strlen():the string length function can be used to find the length of the string in
bytes. It takes the form
length=strlen(str);
The parameter to strlen, str is a string. The return value length is an integer
representing current length of str in bytes excluding the null character.
Ex: str=”KSIT”
lenth=strlen(str); //4
str=’\0’
length=strlen(str); //0

2. strcmp( ): A strcmp() is used to compare two strings. It takes the two strings as
a parameter and returns an integer value based on the relationship between two strings.
General form of call to strcmp()

PSP NOTES,MODULE 3 PALLAVI K N


result=strcmp(first,second);
result>0 if first> second
result=0 if first==second
result<0 if first<second

Ex: int res;


res=strcmp(“cat”,”car”); //res>0
res=strcmp(“pot”,”pot”);//res==0
res=strcmp(“big”,”little”); //res<0

3. strcat( ): often it is useful to concatenate or join two strings together. The strcat
function is used to join two strings together. The resulting string has only one null
character at the end.
General form of a call to
strcat( )

strcat(first, second);

After the call, first contains all the characters from first, followed by the ones from
second up to and including the first null character in second.
Note: strcat stops copying when it finds a null character in the second string. If it doesn’t
find a null character, strcat continues copying bytes from memory until it finds null
character. The programmer must check to make sure that the resulting string fits in the
variable.

Ex: char dest[30]=”computer”;


char second[15]=” programming”;
strcat(dest,second); //computer
programming

2. strncmp( ): The strncmp function compares up to specified number of characters


PSP NOTES,MODULE 3 PALLAVI K N
from the two string, starting at the address specified, and returns integer representing
the relationship between the compared string sections. It compares the character by
character until it finds a null character or characters that are different or until it has
compared number of characters.
General form of call to strncmp()
Result=(firstaddress, secondaddress, numchars);

Ex: char first[30]=”string”;


char second[10]=”stopper”;
int n;
if(strncmp(first,second,4)==0)
printf(“first four characters are alike\n”); else
if(strncmp(first,second,4)<0)
printf(“first four characters of first string are less\n”);
else
printf(“first four characters of first string are greater\n”);

3. strncpy( ): The strncpy function allows us to extract a substring from one string
and copy it to another location.
General form of call to strncpy
strncpy(dest, source, numchars);
The strncpy function takes three parameters. Here this statement copies the numchars of
the source string in to dest string. Since numchar does not include null character , we
have to place it explicitly in the source string.
Ex: char source[20]=”computer
world”; char dest[10];
strncpy(dest,source,3); //first three characters of source is copied into dest
dest[3]=’\0’; //we have to put null character at the end of dest string
printf(“%s”,dest); //com

Array of strings: Array of string is an array of one dimensional character array, which
consists of strings as its individual elements.
Declaration of array of strings: Char name[size1][size2];

PSP NOTES,MODULE 3 PALLAVI K N


Ex:
char
days[7][10]={“Sunday”,”Monday”,”Tuesday”,”Wednesday”,”Thursday”,”Friday”,”Saturday”};

PROGRAMS
1. WACP to read N integers into an array A and to
i. Find the sum of odd numbers.
ii. Find the sum of even numbers.
iii. Find the average of all numbers.
Output the results compared with appropriate headings.
2. Program to read and write the elements of one dimensional array
3. Program to read and write the elements of two dimensional arrays
4. Program to count number of odd numbers and even numbers in an array
5. C program to find largest element in the two dimensional array.
6. Write a C program to concatenate two strings without using build in function
strcat.

PSP NOTES,MODULE 3 PALLAVI K N

You might also like