C-Programming and Data Structures Lab Manual
C-Programming and Data Structures Lab Manual
Objective : 1
To find the sum of individual digits of a given number
Description:
Sum of the individual digits means adding all the digits of a number
Ex: 123 sum of digits is 1+2+3=6
Algorithm:
Step 1: start
Step 2: read n
Step 3: initialize the s=0
Step 4: if n<0 goto Step 7
Step 5: if n!=0 goto Step 6 else goto step 7
Step 6: store n%10 value in p
Add p value to s
Assign n/10 value to n
Goto Step 5
Step 7: print the output
Step 8:stop
2
Flowchart:
START
S=0
READ N
TRUE FALSE
IF N<0
OUTPU WHILE
T
N! =0
TRUE
STOP
P=N%10
S=S+P
N=N/10
3
Program:
#include<stdio.h>
main()
{
int n,s,p;
clrscr();
printf("enter the vaue for n:\n");
scanf("%d",&n);
s=0;
if(n<0)
printf("The given number is not valid");
else
{
while(n!=0) /* check the given value =0 or not */
{
p=n%10;
n=n/10;
s=s+p;
}
printf("sum of individual digits is %d",s);
}
getch();
}
Output:
1.Enter the value for n: 333
Sum of individual digits is 9
2.Enter the value for n: 4733
Sum of individual digits is 17
3. Enter the value for n: -111
The given number is not valid
Conclusion : The program is error free
VIVA QUESATIONS:
Objective:2
To print the Fibonacci series for 1 to n value
Description
A fibonacci series is defined as follows
The first term in the sequence is 0
The second term in the sequence is 1
The sub sequent terms 1 found by adding the preceding two terms in the sequence
Formula: let t1,t2,…………tn be terms in fibinacci sequence
t1=0, t2=1
tn=tn-2+tn-1……where n>2
algorithm:
Step 1: start
Step 2: initialize the a=0, b=1
Step 3: read n
Step 4: if n== 1 print a go to step 7. else goto step 5
Step 5: if n== 2 print a, b go to step 7 else print a,b
Step 6: initialize i=3
i) if i<= n do as follows. If not goto step 7
c=a+b
print c
a=b
b=c
increment I value
goto step 6(i)
Step 7: stop
5
Flowchart:
START
A=0,b=1
Read n
True False
If n
==1 True False
If n
Output a ==2
Output a,b Output a,b
I<n
C = a+b
Output c
Stop
A=b
B= c
6
Program:
#include<stdio.h>
void main()
{
int a,b,c,n,i;
clrscr();
printf("enter n value");
scanf("%d",&n);
a=0;
b=1;
if(n==1)
printf("%d",a);
else
if(n==2)
printf("%d%d",a,b);
else
{
printf("%d%d",a,b);
//LOOP WILL RUN FOR 2 TIME LESS IN SERIES AS THESE WAS
PRINTED IN ADVANCE
for(i=2;i<n;i++)
{
c=a+b;
printf("%d",c);
a=b;
b=c;
}
getch();
}
}
Output:
1. Enter n value : 5
01 1 2 3
2. Enter n value : 7
0 1 1 2 3 5 8
3. Enter n value : -6
0 1
Conclusion : The program is error free
7
VIVA QUESATIONS:
Objective :3
Flow chart:
Start
Read n
false I=1
I<=n
I++
false J = 1 J++
J<=i
false true
false
If
fact==2 If I % j ==
0
Output true
fact
Fact ++
stop
10
Program:
#include<stdio.h>
#include<conio.h>
void main()
{
int n,i,fact,j;
clrscr();
printf("enter the number:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
fact=0;
//THIS LOOP WILL CHECK A NO TO BE PRIME NO. OR NOT.
for(j=1;j<=i;j++)
{
if(i%j==0)
fact++;
}
if(fact==2)
printf("\n %d",i);
}
getch( );
}
Output:
Enter the number : 5
2 3 5
Enter the number : 10
2 3 5 7
Enter the number : 12
2 3 5 7 11
VIVA QUESATIONS:
1) What is prime number ?
Ans: Prime number is a number which is exactly divisible by one and itself only
2)What is an algorithm?
Ans : A step by step procedure is called algorithm
Objective:4
To find the roots of the quadratic equation
Description:
Nature of roots of quadratic equation can be known from the quadrant = b2-4ac
If b2-4ac >0 then roots are real and unequal
If b2-4ac =0 then roots are real and equal
If b2-4ac <0 then roots are imaginary
Algorithm:
Step 1: start
Step 2: read the a,b,c value
Step 3: if b*b-4ac>0 then
Root 1= (-b+ pow((b*b-4*a*c),0.5))/2*a
Root 2= (-b-pow((b*b-4*a*c),0.5))/2*a
Step 4: if b*b-4ac=0 then
Root1 = Root2 = -b/(2*a)
Step 5: Otherwise Print Imaginary roots. Goto step 7.
Step 6: print roots
Step 7: stop
12
Flowchart:
Start
Read a,b,c
D = pow(b*b-4*a*c),0.5
false
If d > 0
true
If d== 0
R1 = ((-b+D) / (2*a))
R2 = ((-b-D) /(2*a))
R1=-b / (2 * a )
R2= -b / (2 * a)
Output
R1, R2
Imaginary
roots
Stop
13
Program:
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,r1,r2,d;
clrscr();
printf("Enter the values for equation:");
scanf("%f%f%f",&a,&b,&c);
/* check the condition */
if(a==0)
printf("Enter value should not be zero ");
else
{
d=b*b-4*a*c;
/* check the condition */
if(d>0)
{
r1=(-b+sqrt(d)/(2*a));
r2=(-b-sqrt(d)/(2*a));
printf("roots are real and unequal\n");
printf("%f\n%f\n",r1,r2);
}
else
if(d==0)
{
r1=-b/(2*a);
r2=-b/(2*a);
printf("roots are real and equal\n");
printf("root=%f\n",r1);
printf("root=%f\n",r2);
}
else
printf("roots are imaginary");
}
getch();
}
Output:
1. Enter the values for equation: 1, 6, 9
Roots are real and equal
Root= -3.0000
Root= -3.0000
14
VIVA QUESATIONS:
Objective:5
To calculate the sum. Sum=1-x2/2!+ x4/4!- x6/6!+ x8/8!- x10/10!
Sub program:
Step 1: while x!=0 goto Step 2
Step 2: y=y+x; x—
Step 3: return y
Step 4: return to main program
16
Flowchart:
Start
Read x,I,n,c
S=0
I=0,n=0 i<=10
I = I + 2, n++
S=s+(pow(-1,n)*pow(x,i) / fact(i))
Stop Fact ()
While x!
=0
Y=y*x
x--
Return y
Return to main
program
17
Program:
#include<stdio.h>
#include<math.h>
long fact(int);
void main()
{
int x,i,n;
float s=0,c;
clrscr();
printf("\n enter the value of x\t");
scanf("%d",&x);
/*perform the looping operation*/
for(i=0,n=0;i<=10;i=i+2,n++)
s=s+(pow(-1,n)*pow(x,i)/fact(i));
printf("\n the result is %f",s);
getch();
}
/* calling sub program*/
long fact(int x)
{
long int y=1;
while(x!=0)
{
y=y*x;
x--;
}
return y;
}
Output:
1.Enter the value of x : 1
The result is 0.540302
2 Enter the value of x: 2
The result is -0.416155
Conclusion: The program is error free
VIVA QUESATIONS:
1) What is function ?
Ans: A function is a sub program it returns a value.
2) What is procedure ?
Ans: A procedure is a sub program it does not returns a value
Objective: 6
Programs that use recursive function to find the factorial of a given integer.
Description:
Factorial of a number is nothing but the multiplication of numbers from a given
number to 1
Sub program:
Step 1: initialize the f
Step 2: if n= = 0 or n == 1 return 1 to main program if not goto step 3
Step 3: return n*fact(n-1) to main program
19
Flowchart:
Start
Read n
Call subprogram
F = fact(n)
output
Stop
Sub program
Fact ()
false
If n=0 || n=1
true Return
n*fact(n-1)
Return to main
program
20
Program:
#include<stdio.h>
#include<conio.h>
int fact(int n)
{
int f;
if((n==0)||(n==1)) // check the condition for the n value
return(n);
else
f=n*fact(n-1); //calculate the factorial of n
return(f);
}
void main()
{
int n;
clrscr();
printf("enter the number :");
scanf("%d",&n);
printf("factoria of number%d",fact(n));
getch();
}
Output:
1. Enter the number : 5
Factorial of number: 120
2. Enter the number : 3
Factorial of number: 6
3. Enter the number : 9
Factorial of number: -30336
VIVA QUESATIONS:
Objective : 7
Program that use non recursive function to find the factorial of a given integer.
Description:
Factorial of a number is nothing but the multiplication of numbers from a given
number to 1
Ex: 5! =5*4*3*2*1= 120
Algorithm: main program
Step 1: start
Step 2: read n
Step 3: call the sub program fact(n)
Step 4: print the f value
Step 5: stop
Sub program:
Step 1: initialize the f=1
Step 2: if n==0 or n=1 return 1 to main program. If not goto step 3
Step 3: perform the looping operation as follows
For i=1 i<=n; i++
Step 4: f=f*i
Step 5: return f value to the main program
22
Flowchart:
Factorial nonrecursive
start
Read i
Call subprogram
Fact(n)
Print output
Value of fact
Stop
Sub program
Fact ( )
F = 1, i
If n == 0 ||
n == 1
I=1 i++
I<=n
Program:
#include<stdio.h>
#include<conio.h>
int fact(int n) //starting of the sub program
{
int f=1,i;
if((n==0)||(n==1)) // check the condition for n value
return(1);
else
for(i=1;i<=n;i++) // perform the looping operation for calculating the factorial
f=f*i;
return(f);
}
void main()
{
int n;
clrscr();
printf("enter the number :");
scanf("%d",&n);
printf("factoria of number%d",fact(n));
getch();
}
Output:
1.Enter the number: 7
Factorial of number: 5040
2. Enter the number: 6
Factorial of number: 720
3. Enter the number: 8
Factorial of number: -25216
Conclusion:
The program is error free
VIVA QUESATIONS:
Objective: 8
To find the GCD of two given integers by using the recursive function
Description:
GCD means Greatest Common Divisor. i.e the highest number which divides the
given number
Ex: GCD(12,24) is 12
Formula: GCD= product of numbers/ LCM of numbers
Sub program:
Step 1: if n>m return GCD(n,m)
Step 2: if n==0 return m else goto step 3
Step 3: return GCD (n,m%n)
Step 4: return to main program
25
Flowchart:
Start
Read a,b
Print gcdvalue
Stop
Gcd( )
false true
If
n>m
true
F Return
Gcd (n,m)
If
n==0
Return to main
program
26
Program:
#include<stdio.h>
#include<conio.h>
int gcdrecursive(int m,int n) // starting of the sub program
{
if(n>m)
return gcdrecursive(n,m);
if(n==0)
return m;
else
return gcdrecursive(n,m%n); // return to the main program
}
void main()
{
int a,b,igcd;
clrscr();
printf("enter the two numbers whose gcd is to be found:");
scanf("%d%d",&a,&b);
printf("GCD of a,b is %d",gcdrecursive(a,b)); // return to the sub program
getch();
}
Output:
1. enter the two numbers whose gcd is to be found:5,25
GCD of a,b is : 5
2. enter the two numbers whose gcd is to be found:36,54
GCD of a,b is : 18
3. enter the two numbers whose gcd is to be found:11,13
GCD of a,b is : 1
Conclusion:
The program is error free
VIVA QUESATIONS:
Objective: 9
To find the GCD of two given integers by using the non recursive function
Description:
GCD means Greatest Common Divisor. i.e the highest number which divides the
given number
Ex: GCD(12,24) is 12
Formula: GCD= product of numbers/ LCM of numbers
Algorithm:
Step 1: start
Step 2: read a,b
Step 3: call sub program g=GCD(a,b)
Step 4: print the g value
Step 5: stop
Sub program:
Step 1: initialize the p=1, q, remainder
Step 2: remainder=p-(p/q*q)
Step 3: remainder=0 return q else goto step 4
Step 4: GCD(q,remainder) return to main program
28
Flowchart:
start
Read a, b
output
stop
Gcd ( )
Remainder=p-(p/q*q)
false True
If
remainder==0
Gcd(q,remainder) Return q
Program:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int gcdnonrecursive(int m,int n)
{
int remainder;
remainder=m-(m/n*n);
if(remainder==0)
return n;
else
gcdnonrecursive(n,remainder);
}
void main()
{
int a,b,igcd;
clrscr();
printf("enter the two numbers whose gcd is to be found:");
scanf("%d%d",&a,&b);
printf("GCD of %d",gcdnonrecursive(a,b));
getch();
}
Output:
1. enter the two numbers whose gcd is to be found:5,25
GCD of a,b is : 5
2. enter the two numbers whose gcd is to be found:36,54
GCD of a,b is : 18
3. enter the two numbers whose gcd is to be found:11,13
GCD of a,b is : 1
Conclusion:
The program is error free
VIVA QUESATIONS:
Objective :10
Flowchart:
START
SOURCE = A
INTERMEDIATE = C
DESTINATION = B
READ n
Call subprogram
Hanoi(num,source,intermediate,destination) A,C, B
Stop
hanoirecursive( )
false true
If num==1
Num-1,source “A”
Return to main
Call ubprogram program
Print A,C Hanoi(num-1,B,C,A))
32
Program:
#include<stdio.h>
#include<conio.h>
void Hanoirecursion(int num,char ndl1,char ndl2,char ndl3)
{
if(num==1)
{
printf("Move top disk from needle %c to needle %c",ndl1,ndl2);
return;
}
Hanoirecursion(num-1,ndl1,ndl3,ndl2);
printf("Move top dis from needle %c to needlle %c",ndl1,ndl2);
Hanoirecursion(num-1,ndl3,ndl2,ndl1);
}
void main()
{
int no;
clrscr();
printf("Enter the no. of disk to be transferred:");
scanf("%d",&no);
if(no<1)
printf("\n There's nothing to move");
else
printf("\n recursive");
Hanoirecursion(no,'A','B','C');
getch();
}
Outputs:
1. Enter the no. of disk to be transferred :3
Move top disk from needle a to needle b
Move top disk from needle a to needle c
Move top disk from needle b to needle c
Move top disk from needle a to needle b
Move top disk from needle c to needle a
Move top disk from needle c to needle b
Move top disk from needle a to needle b
Conclusion:
The program is error free
VIVA QUESATIONS:
1) What is purpose of towers of Hanoi ?
Ans: We have to transfer all the disks from source to destination towers. Here the
restriction is not to place a big disk on smaller one . for this we use intermediate
tower. Finally the arrangements in the destination tower must be as same as the
disks in the source tower at first.
33
Objective :11
To solve the towers of Hanoi problem by using the non recursive function
Description:
Towers of Hanoi problem means we have three towers
Algorithm:
Step 1: start
Step 2: declare the no
Step 3: read the no value
Step 4: if (no<1) Print nothing to move
Else Print nonrecursion
Step 5:Hanoi non recursion(no,.A’,’B’,’C’)
Step 6:stop
Sub program:
Step 1: Declare num,sndl,indl,dndl,
stkn[ ],stksndl[ ],stkdndl [ ],stkadd[ ],
temp,top,add
Step 2: declare the top=NULL
Step 3: one:
If(num==1)then
Print the out put value
Goto four
Step 4: two:
Top=top+1
Stkn[top]=num
Stksndl[top]=sndl
Stkindl[top]=indl
Stkdndl[top]=dndl
Stkadd[top]=3
Num=num-1
34
Sndl=sndl
Temp=indl
Indl=dndl
Dndl=temp
Goto one. Goto step 3
Step 5:
Three:
Print the output
Top=top+1
Stkn[top]=num
Stksndl[top]=sndl
Stkindl[top]=indl
Stkdndl[top]=dndl
Stkadd[top]=5
Num=num-1
temp=sndl
sndl=indl
Indl=temp
Dndl=dndl
Goto one. Goto step 3
Step 6:
Four:
If(top==NULL)
Return to main program
Num= stkn[top]
Sndl= stksndl[top]
Indl= stkindl[top]
Dndl=stkdndl[top]
Add=stkadd[top]
Top=top-1
If(add==3)
Goto three. Goto step 5
Else
If(add==5)
Goto four. Goto step 6.
Step 7: return to main program
35
Flow chart:
Start
Read no
false true
If no< 1 Print nothing to
move
Print
nonrecursion
Hanoinonrecursion
(no,.A’,’B’,’C’)
Stop
36
Hanoi nonrecursion ( )
Declare num,sndl,indl,dndl,
stkn[ ],stksndl[ ],stkdndl [ ],stkadd[ ],
temp,top,add
Top = NULL
one true
two
Top=top+1
Stkn[top]=num If
Stksndl[top]=sndl top=NUL
Stkindl[top]=indl L
Stkdndl[top]=dndl four
Stkadd[top]=3
Num=num-1 Num= stkn[top]
Sndl=sndl
Sndl= stksndl[top]
Temp=indl
Indl=dndl Indl= stkindl[top]
Dndl=temp Dndl=stkdndl[top]
Add=stkadd[top]
Top=top-1
Print value
Top=top+1
Stkn[top]=num If
Stksndl[top]=sndl add==3
Stkindl[top]=indl
Stkdndl[top]=dndl
Stkadd[top]=5
Num=num-1 false
temp=sndl
sndl=indl
Indl=temp
Dndl=dndl If
Top=top+1 add==
5
37
Program:
#include<stdio.h>
#include<conio.h>
void Hanoinonrecursion(int num,char sndl,char indl,char dndl)
{
char stkn[100],stksndl[100],stkindl[100],stkdndl[100],stkadd[100],temp;
int top,add;
top=NULL;
one:
if(num==1)
{
printf("\n Move top disk from needle %c to needle %c",sndl,dndl);
goto four;
}
two:
top=top+1;
stkn[top]=num;
stksndl[top]=sndl;
stkindl[top]=indl;
stkdndl[top]=dndl;
stkadd[top]=3;
num=num-1;
sndl=sndl;
temp=indl;
indl=dndl;
dndl=temp;
goto one;
three:
printf("\n Move top disk from needle %c to needle %c",sndl,dndl);
top=top+1;
stkn[top]=num;
stksndl[top]=sndl;
stkindl[top]=indl;
stkdndl[top]=dndl;
stkadd[top]=5;
num=num-1;
temp=sndl;
sndl=indl;
indl=temp;
dndl=dndl;
goto one;
four:
if(top==NULL)
return;
38
num=stkn[top];
sndl=stksndl[top];
indl=stkindl[top];
dndl=stkdndl[top];
add=stkadd[top];
top=top-1;
if(add==3)
goto three;
else if(add==5)
goto four;
}
void main()
{
int no;
clrscr();
printf("Enter the no. of diss to be transferred:");
scanf("%d",&no);
if(no<1)
printf("\n There's nothing to move");
else
printf("\n nonrecursive");
Hanoinonrecursion(no,'A','B','C');
getch();
}
Output:
1.Enter the no. of diss to be transferred:3
nonrecursive
Move top disk from needle A to needle C
Move top disk from needle A to needle B
Move top disk from needle C to needle B
Move top disk from needle A to needle C
Move top disk from needle B to needle A
Move top disk from needle B to needle C
Move top disk from needle A to needle C
Conclusion: The program is error freed
VIVA QUESATIONS:
1) What is purpose of towers of Hanoi ?
Ans: We have to transfer all the disks from source to destination towers. Here the
restriction is not to place a big disk on smaller one . for this we use intermediate
tower. Finally the arrangements in the destination tower must be as same as the
disks in the source tower at first.
2) What is an array ?
Ans: An array is a sequence of memory location of same data type.
39
Objective: 12
The total distance travelled by vehicle in 't' seconds is given by distance =
ut+1/2at2 where 'u' and 'a' are the initial velocity (m/sec.) and acceleration
(m/sec2). Write C program to find the distance travelled at regular intervals of
time given the values of 'u' and 'a'. The program should provide the flexibility to
the user to select his own time intervals and repeat the calculations for different
values of 'u' and 'a'.
Description:
The total distance travelled by vehicle in 't' seconds is given by distance =
ut+1/2at2 where 'u' and 'a' are the initial velocity (m/sec.) and acceleration
(m/sec2).
Algorithm:
Step 1:Start
Step 3: Set i to 1
Step 4:Set k to dt
Step 7: Write s
Flowchart:
41
Program:
#include<stdio.h>
main()
{
int a,u,t,t1,t2,i;
float s;
clrscr();
printf("ENTER THE VALUES OF a,u,t,t1,t2:");
scanf("%d%d%d%d%d",&a,&u,&t,&t1,&t2);
for(i=t1;i<=t2;i=i+t) // performing the looping operation for time intervals
{
s=(u*i)+(0.5*a*i*i); // calculate the total distance
printf("\n\nthe distance travelled in %d seconds is %f ",i,s);
}
getch();
}
Input/Output:
VIVA QUESATIONS:
1) How many types of arrays are there ?
Ans: Three types. They are one dimensional ,two dimensional and multi dimensional
arrys
42
Objective:13
Two integer operands and one operator form user, performs the operation
and then prints the result.
(Consider the operators +,-,*, /, % and use Switch Statement)
Description:
To take the two integer operands and one operator from user to perform
the some arithmetic operations by using the following operators like
+,-,*, /, %
Ex: 2+3=5
Algorithm:
Step 1: Start
Step 8: write R
Step 9:End
43
Flowchart:
44
Program:
#include<stdio.h>
main()
{
char op;
float a,b,c;
clrscr();
printf("enter two operands:");
scanf("%d%d",&a,&b);
printf("enter an operator:");
scanf(" %c",&op);
switch(op) // used to select particular case from the user
{
case '+':printf("sum of two numbers %2d %2d is: %d",a,b,a+b);
break;
case '-':printf("subtraction of two numbers %2d %2d is:
%d",a,b,a-b);
break;
case '*':printf("product of two numbers %2d %2d is:
%d",a,b,a*b);
break;
case '/':printf("quotient of two numbers %2d %2d is:
%d",a,b,a/b);
break;
case '%':printf("reminder of two numbers %2d %2d is:
%d",a,b,c);
break;
default:printf("please enter correct operator");
break;
}
getch();
}
Input/Output:
enter an operator:*
product of two numbers 3 5 is: 15
VIVA QUESATIONS:
Objective : 14
To find both the largest and smallest number in a list of integers
Description:
This program contains n number of elements, in these elements we can find the
largest and smallest numbers and display these two numbers
Algorithm:
Step 1: start
Step 2: read n
Step 3: initialize i=0
Step 4: if i<n do as follows. If not goto step 5
Read a[i]
Increment i
Goto step 4
Step 5: min=a[0], max=a[0]
Step 6: initialize i=0
Step 7: if i<n do as follows. If not goto step 8
If a[i]<min
Assign min=a[i]
Increment i goto Step 7
Step 8: print min,max
Step 9: stop
47
Flowchart: Start
Read n,
a[i],min,max,
Min = a[0]
Max = a[0]
I= 0
I<n i++
Read a[i]
false
I=0 i++
I< n
true
false
Max<min
true
Min=a[i]
false
A[i]>ma
x
true
Print
min,max Max=a[i]
stop
48
Program:
#include<stdio.h>
void main()
{
int a[10],i,n,min,max;
clrscr();
printf("enter the array size:");
scanf("%d",&n);
printf("Enter the elements of array");
for(i=0;i<n;i++) // read the elements of an array
scanf("%d",&a[i]);
min=a[0];
max=a[0];
for(i=0;i<n;i++)// read the elements of an array
{
if(a[i]<min)// check the condition for minimum value
min=a[i];
if(a[i]>max)//check the condition for maximum value
max=a[i];
}
printf("maximum value is:%d\n",max);
printf("minimum value is:%d\n",min);
getch();
}
Output:
1.enter the array size:4
Enter the elements of array 36 13 2 45
maximum value is:45
minimum value is:2
2.enter the array size:5
Enter the elements of array 6 2 1 3 8
maximum value is:8
minimum value is:1
3.enter the array size:5
Enter the elements of array-6 9 -9 2 5
maximum value is:9
minimum value is:-9
conclusion: the program is error free
VIVA QUESATIONS:
1) What is an array ?
Ans: The collection of similar elements is called array
2) How many types of arrays are there ?
Ans: Three types. They are one dimensional ,two dimensional and multi dimensional
arrys
49
Objective:15
To perform the addition of two matrices
Description:
program takes the two matrixes of same size and performs the addition an also
takes the two matrixes of different sizes and checks for possibility of
multiplication and perform multiplication if possible.
algorithm:
Step 1: start
Step 2: read the size of matrices A,B – m,n
Step 3: read the elements of matrix A
Step 4: read the elements of matrix B
Step 5: select the choice for you want. If you select case 1 then goto matric
addition. Else goto Step 7.
Step 6: print Sum of matrix A and B
Step 7: if you select case 2 then goto matrix multiplication
Step 8: check if n=p, if not print matrices can not be multiplied
Step 9: Otherwise perform the multiplication of matrices
Step 10: Print the resultant matrix
Step 11: Stop
50
start
Flow chart:
Declare a[][],b[]
[],c[]
[],ch,I,j,k,m,n,p,q,r1,
c1
If ch<=2
&ch>0
Printvalid
choice
Case 1
Case 2
Switch
ch
I=0
I=0
I< r1 i++
I< r1 i++
j=0
J=0
j<c1 j++
jI< c1 ji++
Read A[i][j]
Read A[i][j]
Read size of
I=0 matrix B: p.q
I< r1 i++
I=0
I< p i++
j=0
jI<c1 j++
B
Read B[i[j]
B
51
B
I=0
I< r1 i++
j=0
j< q j++
j=0
Read B[i][j]
j< c1 j++
Print A[i][j]+B[i][j]
If
n==p
Stop
j=0
j< q j++
C[i][j]=0
k0
j< n k++
Print C[i][j]
C[i][j]=C[i][j]+A[i][k]*B[k][j]
j=0 i=0
Program:
#include<stdio.h>
void main()
{
int ch,i,j,m,n,p,q,k,r1,c1,a[10][10],b[10][10],c[10][10];
clrscr();
printf("************************************");
printf("\n\t\tMENU");
printf("\n**********************************");
printf("\n[1]ADDITION OF TWO MATRICES");
printf("\n[2]MULTIPLICATION OF TWO MATRICES");
printf("\n[0]EXIT");
printf("\n**********************************");
printf("\n\tEnter your choice:\n");
scanf("%d",&ch);
switch(ch)
{
case 1:
printf("Input rows and columns of A & B Matrix:");
scanf("%d%d",&r1,&c1);
printf("Enter elements of matrix A:\n");
for(i=0;i<r1;i++)
{
for(j=0;j<c1;j++)
scanf("%d",&a[i][j]);
}
printf("Enter elements of matrix B:\n");
for(i=0;i<r1;i++)
{
for(j=0;j<c1;j++)
scanf("%d",&b[i][j]);
}
printf("\n =====Matrix Addition=====\n");
for(i=0;i<r1;i++)
{
For(j=0;j<c1;j++)
printf("%5d",a[i][j]+b[i][j]);
53
printf("\n");
}
break;
case 2:
printf("Input rows and columns of A matrix:");
scanf("%d%d",&m,&n);
printf("Input rows and columns of B matrix:");
scanf("%d%d",&p,&q);
if(n==p)
{
printf("matrices can be multiplied\n");
printf("resultant matrix is %d*%d\n",m,q);
printf("Input A matrix\n");
read_matrix(a,m,n);
printf("Input B matrix\n");
/*Function call to read the matrix*/
read_matrix(b,p,q);
/*Function for Multiplication of two matrices*/
printf("\n =====Matrix Multiplication=====\n");
for(i=0;i<m;++i)
for(j=0;j<q;++j)
{
c[i][j]=0;
for(k=0;k<n;++k)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
case 0:
printf("\n Choice Terminated");
exit();
break;
default:
printf("\n Invalid Choice");
54
}
getch();
}
Output:
1.
************************************
MENU
**********************************
[1]ADDITION OF TWO MATRICES
[2]MULTIPLICATION OF TWO MATRICES
[0]EXIT
**********************************
Enter your choice:
1
Valid Choice
Input rows and columns of A & B Matrix:2
2
Enter elements of matrix A:
2
2
2
55
2
Enter elements of matrix B:
2
2
2
2
=====Matrix Addition=====
4 4
4 4
************************************
MENU
**********************************
[1]ADDITION OF TWO MATRICES
[2]MULTIPLICATION OF TWO MATRICES
[0]EXIT
**********************************
Enter your choice:
2
Valid Choice
Input rows and columns of A matrix:2
3
Input rows and columns of B matrix:2
2
Matrices cannot be multiplied.
************************************
MENU
**********************************
[1]ADDITION OF TWO MATRICES
[2]MULTIPLICATION OF TWO MATRICES
[0]EXIT
**********************************
Enter your choice:
2
Valid Choice
Input rows and columns of A matrix:2
2
Input rows and columns of B matrix:2
2
matrices can be multiplied
resultant matrix is 2*2
Input A matrix
2
2
2
56
2
Input B matrix
2
2
2
2
=====Matrix Multiplication=====
Resultant of two matrices:
8 8
8 8
Conclusion : The program is error free
VIVA QUESATIONS:
Objective :16
Functions to insert a sub string into given main string from a given position
Description:
in this program we need to insert a string into another string from a specified
position.
Algorithm:
Step 1: start
Step 2: read main string and sub string
Step 3: find the length of main string(r)
Step 4: find length of sub string(n)
Step 5: copy main string into sub string
Step 6: read the position to insert the sub string( p)
Step 7: copy sub string into main string from position p-1
Step 8: copy temporary string into main string from position p+n-1
Step 9: print the strings
Step 10: stop
58
I=0
I<r
C[i] = A[i]
I ++
S=n+r
O=p+n
I =p I++
I<s B
X= C[i]
If t < n
A
59
B
A
A[i] = B[t]
T=t+1
A[o]=x
O=o+1
Print output
Stop
60
Program:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char a[10];
char b[10];
char c[10];
int p=0,r=0,i=0;
int t=0;
int x,g,s,n,o;
clrscr();
printf("%s", a);
getch();
}
Output:
1.enter first string:
computer
2.enter second string:
gec
3.enter the position where the item has to be inserted:3
comgecputer
conclusion : the program is error free
VIVA QUESATIONS:
1) What is string ?
Ans: A string is an collection of characters
2) Which command is used to combined the two strings ?
Ans: Strcat()
3) Which command is used to copy the strings ?
Ans: By using the strcpy() function copies one string to another
62
Objective:17
To delete n characters from a given position in a given string
Description:
in this program we need to delete a string from the given string at a specified
position.
Algorithm:
Step 1: start
Step 2: read string
Step 3: find the length of the string
Step 4: read the value of number of characters to be deleted and positioned
Step 5: string copy part of string from position to end, and (position+number of
characters to end)
Step 6: stop
63
Read string
Read position, no of
characters
Stop
Subprogram
Delchar( )
If ((a+b-1_<=
strlen(x))
Strcpy(&x[b-1],&x[a+b-1])
Puts(x)
Return to
mainprogram
64
Program:
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main()
{
char string[10];
int n,pos,p;
clrscr();
VIVA QUESATIONS:
1) Which command is used to delete the strings ?
Ans: delstr();
2) What are the various types of string functions ?
Ans: Strcat(), strcpy(), delstr(), substr() ,strlen()etc..,
66
Objective: 18
To determine if the given string is a palindrome or not
Description:
if the reverse of a string is equal to original string then it is called palindrome
Algorithm:
Step 1:start
Step 2: read the string
Step 3: store reverse of the given string in a temporary string
Step 4: compare the two strings
Step 5: if both are equal then print palindrome
Step 6: otherwise print not palindrome
Step 7: stop
67
Read string
Ispalindrome(string)
true
Print not If(Ispalindro Print
palindrome me(string) palindrome
Stop
68
Ispalindrome( )
If len== 0
Return 0
Left = 0
Right=len-1
While(left<ri
ght&&match
ed
If(string[left]!
=string[right])
true
Left ++
Right -- Matched=false
Return
matched
Return to main
program
69
Program:
#include<stdio.h>
#include<string.h>
enum Boolean{false,true};
enum Boolean IsPalindrome(char string[])
{
int left,right,len=strlen(string);
enum Boolean matched=true;
if(len==0)
return 0;
left=0;
right=len-1;
/* Compare the first and last letter,second & second last & so on */
while(left<right&&matched)
{
if(string[left]!=string[right])
matched=false;
else
{
left++;
right--;
}
}
return matched;
}
int main()
{
char string[40];
clrscr();
printf("****Program to test if the given string is a palindrome****\n");
printf("Enter a string:");
scanf("%s",string);
if(IsPalindrome(string))
printf("The given string %s is a palindrome\n",string);
else
printf("The given string %s is not a palindrome\n",string);
getch();
return 0;
}
70
Output:
1. Enter the string:malayalam
The given string malayalam is a palindrome
2. Enter the string:india
The given string india is not a palindrome
Conclusion: The program is error free
VIVA QUESATIONS:
Objective: 19
Program that displays the position or index in the string S where the string T
begins , or -1 if S doesn’t contain T
Algorithm:
Step 1: start
Step 2: read the string and then displayed
Step 3: read the string to be searched and then displayed
Step 4: searching the string T in string S and then perform the following steps
i. found=strstr(S,T)
ii. if found print the second string is found in the first string at the
position. If not goto step 5
Step 5: print the -1
Step 6: stop
72
Display the
string
Read string to be
searched
Display the
string
Found=strstr(s,t)
no yes
If found
Print -1
Print the string
Found-s
Stop
73
Program:
#include<stdio.h>
#include<string.h>
#include<conio.h>
void main()
{
char s[30], t[20];
char *found;
clrscr();
Output:
1.enter the first string:
kali
Enter the string to be seareched:
li
second string is found in the first string at2position
2.enter the first string:
nagaraju
Enter the string to be seareched:
raju
second string is found in the first string at4position
3.enter the first string:
nagarjuna
Enter the string to be seareched:
ma
-1
Conclusion: The program is error free
74
VIVA QUESATIONS:
Objective: 20
To count the lines,words & charcters in a given text
Description:
In this program we have to count the no of lines, no of words and no of
characters in a given program or given text by using the string function
Algorithm:
Step 1: Start
Step 2: Read the text until an empty line
Step 3: Compare each character with newline char ‘\n’ to count no of lines
Step 4: Compare each character with tab char ‘\t\’ or space char ‘ ‘ to count no
of words
Step 5: Compare first character with NULL char ‘\0’ to find the end of text
Step 6: No of characters = length of each line of text
Step 7: Print no of lines, no of words, no of chars
Step 8: Stop
76
Initialize end=0,chars=0,words=0,lines=0
While
End==
0
true
C=0
false
If (ctr=getchar())!
=’\n’
true Line[c]=’\0’
Line[c++]=ctr
true
If
line[0]=’\0
’
false
Print lines,
Words,chars
I=0 Words ++
I ++ line[i]!=’\0\
stop
Lines++
Chars+=strlen(line)
If line[i]==’ ‘||
Line[i]==’\t’
Words ++
77
Program:
#include <stdio.h>
main()
{
char line[81], ctr;
int i,c,
end = 0,
characters = 0,
words = 0,
lines = 0;
printf("KEY IN THE TEXT.\n");
printf("GIVE ONE SPACE AFTER EACH WORD.\n");
printf("WHEN COMPLETED, PRESS 'RETURN'.\n\n");
while( end == 0)
{
/* Reading a line of text */
c = 0;
while((ctr=getchar()) != '\n')
line[c++] = ctr;
line[c] = '\0';
/* counting the words in a line */
if(line[0] == '\0')
break ;
else
{
words++;
for(i=0; line[i] != '\0';i++)
if(line[i] == ' ' || line[i] == '\t')
words++;
}
/* counting lines and characters */
lines = lines +1;
characters = characters + strlen(line);
}
printf ("\n");
printf("Number of lines = %d\n", lines);
printf("Number of words = %d\n", words);
printf("Number of characters = %d\n", characters);
}
Output
1.KEY IN THE TEXT.
GIVE ONE SPACE AFTER EACH WORD.
WHEN COMPLETED, PRESS 'RETURN'.
Admiration is a very short-lived passion.
Admiration involves a glorious obliquity of vision.
Always we like those who admire us but we do not
78
VIVA QUESATIONS:
Objective 21:
To generate Pascal’s triangle
Description:
Pascal’s triangle which is used for a coefficient in the equation in
polynominals.
Alogrithm:
Step 1: Start
Step 2: Initialize m=0
Step 3: Read n
Step 4: If m<n goto step 5.if not goto step 12
Step 5: initialize i=40-m
Step 6: If i>0 is true do as follows. If not goto step 7
i. print white space
ii. decrement i
iii. goto Step 6
Step 7: Initialize j=0
Step 8: If j=m do as follows. If not goto Step 10
i) if(j==0||m==0)
ii) Initialize b=1 if not b=b*(m-j+1)/j
iii) Print white space, b .
iv) Goto Step 9
Step 9: increment j, goto Step 8
Step 10: print new line control
Step 11: increment m, goto step 4
Step 12: Stop
80
Flow chart:
Start
Read p
true
I=0 I<p R=40-I r--
I++ r>0
false
false
Print true
newlin
e Print white
F space
X=0 x<=i
true
Stop
X++
false
true
If x==0
||
I==0
B=1 B=b*(i-x+1)/x
Ptint b
81
Program:
#include<stdio.h>
#include<conio.h>
void main()
{
int i,p,r,x,binom=1;
clrscr();
printf("enter the how many lines to print");
scanf("%d",&p);
i=0;
while(i<p) // check the condition
{
for(r=40-i;r>0;r--) // perform the looping operation until 0
printf(" ");
for(x=0;x<=i;x++)
{
if((x==0)||(i==0)) // check the condition
binom=1;
else
binom=binom*(i-x+1)/x;
printf("%d",binom);
printf(" ");
}
printf("\n");
i++;
}
getch();
}
Output:
1.enter the how many lines to print5
1
11
121
1331
14641
VIVA QUESATIONS:
1) What is meant by Pascal’s triangle ?
Ans: Pascal’s triangle which is used for a coefficient in the equation in polynominals
2)define structure ?
Ans: A structure in c is a heterogenous user efined data type. A structure may contain
different data types.It groups variables into a single entity.
83
Objective 22:
To construct a pyramid of numbers
Description:
In this program the we have to construct output in the pyramid shape manner
Algorithm:
Step 1: Start
Step2: initialize the num,I,y, x=35
Step3: read the num
Step4:perform the loop operation
For(y=0;y<=num;y++)
Step5:Gotoxy(x,y+1)
Step6: perform the loop operation for displaying digits towards the left and right
For(i=0-y;i<=y;i++)
Step7: print abs(i);
Step8: x=x-2;
Step9: Stop
84
Flow chart:
Start
Initialize
num,I,y,x=35
Read num
Y=0 y<=num
y ++
true
Gotoxy(x,y+1)
I=0 i++
I<=y
X=x-2 Print
abs(i)
Stop
85
Program:
#include<stdio.h>
#include<conio.h>
void main()
{
int num,i,y,x=35;
clrscr();
printf("\nEnter the number to generate the pyramid:\n");
scanf("%d",&num);
for(y=0;y<=num;y++)
{
/*(x-coordinate,y-coordinate)*/
gotoxy(x,y+1);
printf("%3d",abs(i));
x=x-3;
}
getch();
}
Output:
Objective 23:
To read in two numbers x and n and then compute the sum of this geometric
progression 1+x+x2+x3+……….+xn
Description:
In this program we have to read the two numbers and the calculate the sum of this
geometric progression in above mention .
Algorithm:
Step 1: Start
Step 2: read values of x and n, sum-1, i=1
Step 3: check for n & X
i) if n<=0 || x<=0
ii) print values are not valid
iii) read values of x and n
Step 4: perform the loop operation
i) for(i=1;i<=n;i++) then follows
ii) sum=sum+pow(x,i)
Step 5: print sum
Step 6: Stop
87
Initialize
Sum,I,x,n
Read x,n
false true
If
n<=0||
x<=0
Sum = 1
Print not
valid
false
I=1 i<=n
I++
true
Sum=sum+pow(x,i)
Print sum
Stop
88
Program:
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
int s_sum,i,x,n;
clrscr();
printf("Enter the values for x and n:");
scanf("%d %d",&x,&n);
if(n<=0 || x<=0)
{
printf("Value is not valid\n");
}
else
{
printf("Value is valid\n");
s_sum=1;
for(i=1;i<=n;i++)
{
s_sum=s_sum+pow(x,i);
}
printf("Sum of series=%d\n",s_sum);
}
getch();
}
Output:
1.Enter the values for x and n:2
3
Value is valid
Sum of series=15
2.Enter the values for x and n:4
9
Value is valid
Sum of series=21845
3.Enter the values for x and n:0
1
Value is not valid
Conclusion: the program is error free
89
VIVA QUESATIONS:
Objective 24:
To convert the given binary number to 2’s complement
Description:
In this program the given binary number is first covert the numbers 0 to1 and
1 to 0. And finally add the 1 to the converted number. Then we will get the
2’s complement number.
Algorithm: main program
Step 1: Start
Step 2: declare the subprogram “complement(char *a)”
Step 3: initialize the variable i
Step 4: read the binary number
Step 5: perform the loop operation. if it is true then follows. if not goto step 7
i) for(i=0;a[i]!=’\0’;i++)
ii) if(a[i]!=’0’&&a[i]!=’1’) then displayed the number is not valid.
enter the correct number.
iii) Exit the loop
Step 6: call sub program ‘complemt(a)’
Step 7: stop
Sub program:
Step 1: initialize the variable I,c=0,b[160
Step 2: 1=strlen(a)
Step 3: perform the loop operation. if it is true then follows. if not goto
i)for(i=l-1;i>=0;i--)
ii)if(a[i]==’0’) then b[i]=’1’ else
iii)b[i]=’0’
Step 4: for(i=l-1;i>=0;i--) is true
i) if(i==l-1) then
ii) if(b[i]==’0’) then b[i]=’1’ else
iii) b[i]=’0’,c=1 if not goto step 5
Flow chart:
Start
Initialize I, a[ ]
Read a
I=0 i++
false
A[i]!=’\0’
true
false
If a[i]!
=’0’&&a[i]!=’1’
Stop
92
Complement(
)
Initialize
,I,c=0,b[ ]
1=strlen(a)
I=i-1 I--
false
i>=0
true
If
a[i]==’
0’ true
B[i]=]0] B[i]=’1’
I=l-1 i--
i>=0
C true
false true
If i==l-
1
false true
If b[i]=’0’
If B[i]=’1’
c==1&& C=1
b[i]==’0’
B[i]==’0’ true
A B
B[i]=’1’
C=0
93
C A
true
If c==1 B[i]=’0] B
&& C=1
b[i]==1
B[i]=’\0’
Print ‘b’
Return to
main
program
Program:
#include <stdio.h>
#include<conio.h>
}
void complement (char *a)
{
int l, i, c=0;
char b[16];
l=strlen(a);
for (i=l-1; i>=0; i--)
{
if (a[i]=='0')
b[i]='1';
else
b[i]='0';
}
for(i=l-1; i>=0; i--)
{
if(i==l-1)
{
if (b[i]=='0')
b[i]='1';
else
{
b[i]='0';
c=1;
}
}
else
{
if(c==1 && b[i]=='0')
{
b[i]='1';
c=0;
}
else if (c==1 && b[i]=='1')
{
b[i]='0';
c=1;
}
}
}
b[l]='\0';
printf("The 2's complement is %s", b);
}
95
Output:
VIVA QUESATIONS:
1) Expand ASCII ?
Ans: American standarad code for information interchange
2)What is binary number ?
Ans: The number which contains only 0 and 1 is called binary number.
3) Define 2”s complement ?
Ans: The given binary number is first covert the numbers 0 to1 and 1 to 0. And finally
add the 1 to the converted number. Then we will get the 2’s complement number.
96
Objective 25:
To convert roman number to it’s decimal equivalent
Description:
In this program we have to take the roman value. This value is converted into a
it’s equivalent decimal number.
Ex: X=10
Algoritham:
Step 1: Start
Step 2: read the roman numerical as string
Step 3: find length of roman numerical
Step 4: for each charcter in the string
i) if(char=I) then decimal=1
ii) if(char=V) then decimal=5
iii) if(char=X) then decimal=10
iv) if(char=L) then decimal=50
v) if(char=C) then decimal=100
vi) if(char=D) then decimal=500
vii) if(char=M) then decimal=1000
viii) otherwise invalid character
Step 5: repeat step 4 until the length of the string
Step 6: k=char[length-1]
Step 7: for each character of decimal string
i) if(decimal[i]>dec[i-1]) then k=k-decimal[i-1]
ii) else if(decimal[i]=decimal[i-1 or decimal[i]<decimal[i-1) then
k=k+decimall[i-1]
Step 8: repate step 7 until the length of decimal string
Step 9: print decimal value
Step 10: Stop
97
Flow chart:
Start
Read
roman
value
Len=strlen(rom)
I=0 i++
I< len
K=a[len-1] True
If A[i]=1
I=len-1 i— rom[i]==’I’
I>0
false
true
true
A[i] If A[i]=5
>a[i- rom[i]==’V’
1]
k=k-a[i-1]
true
F false
true
If A[i]=10
A[i]= rom[i]==’X’
=a[i-
1]||
a[i]<a false
[i-1]
B
true C
k=k+ai-1]
A
98
B
A C
true
If A[i]=50
rom[i]==’L’
Print k false
true
If
A[i]=100
rom[i]==’C’
Stop false
true
If A[i]=500
rom[i]==’D’
false
true
If A[i]=1000
rom[i]==’C’
Print
invalid
99
Program:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
int *a,len,i,j,k;
char *rom;
clrscr();
len=strlen(rom);
{
if(a[i]>a[i-1]) // check the condition
k=k-a[i-1];
else if(a[i]==a[i-1] || a[i]<a[i-1])
k=k+a[i-1];
}
printf("\nIts Decimal Equivalent is:");
printf("%d",k);
getch();
}
Output:
Invalid Value
Conclusion: The program is error free
VIVA QUESATIONS:
Objective 26:
To read the two complex numbers and perform the addition and multiplication
of these two numbers.
Description:
In this program the complex number means it contains the two parts . first one is
real part and second one is imaginary part(2+3i).by taking these two complex
numbers we can perform the addition and multiplication operation.
Algorithm:
Step 1: Start
Step 2: declare structure for complex numbers
Step 3: read the complex number
Step 4: read choice
Step 5: if choice=1 then addition operation will perform and it contains following
steps
i) w.realpart = w1.realpart+w2.realpart;
ii) w.imgpart = w1.imgpart+w2.imgpart; goto step 4
Step 6: if choice=2 then multiplication operation will perform and it contains
following steps
i) w.realpart=(w1.realpart*w2.realpart)-(w1.imgpart*w2.imgpart);
ii) w.imgpart=(w1.realpart*w2.imgpart)+(w1.imgpart*w2.realpart); goto
step 4
Step 7: if choice=0 then exit operation will perform
Declare structure
Read
option
false
If
option=ad
d
w.realpart=w1.realpart+w2.realpart
w.imgpart=w1.imgpart+w2.imgpart If
option=mu
l
false w.realpart=(w1.realpart*w2.realpart)
If w.imgpart=(w1.imgpart*w2.imgpart)
w.imgpart>0
Print real
part
true
Print
w.realpart+w.img
part i
Stop
103
Program:
#include<stdio.h>
#include<math.h>
void arithmetic(int opern);
struct comp
{
double realpart;
double imgpart;
};
void main()
{
int opern;
clrscr();
printf("\n\n \t\t\t***** MAIN MENU *****");
printf("\n\n Select your option: \n 1 : ADD\n 2 : MULTIPLY\n 0 : EXIT \n\n\t\t Enter
your Option [ ]\b\b");
scanf("%d",&opern);
if(opern>2)
{
printf("invalid option");
}
else
{
switch(opern)
{
case 0:
exit(0);
case 1:
case 2:
arithmetic(opern);
default:
main();
}
}
getch();
}
void arithmetic(int opern)
{
struct comp w1, w2, w;
printf("\n Enter two Complex Numbers (x+iy):\n Real Part of First Number:");
scanf("%lf",&w1.realpart);
printf("\n Imaginary Part of First Number:");
scanf("%lf",&w1.imgpart);
printf("\n Real Part of Second Number:");
scanf("%lf",&w2.realpart);
104
Output:
Answer = 4.000000+4.000000i
Answer = 0.000000+8.000000i
***** MAIN MENU *****
1) Define structure ?
Ans: Structure is amethod for packing data of different types. Structure help to organize
complex data in a more meaninigful way.
Objective 27:
Program which copies one file to another
Description:
In this program we have to use the file functions to perform the copy
operation from one file to another file.
Algorithm:
Step 1: Start
Step 2: read command line arguments
Step 3: check if no of arguments =3 or not. If not print invalid no of arguments
Step 4: open source file in read mode
Step 5: if NULL pointer, then print source file can not be open
Step 6: open destination file in write mode
Step 7: if NULL pointer, then print destination file can not be open
Step 8 : read a character from source file and write to destination file until EOF
Step 9: Close source file and destination file
Step 10: Stop
107
Read arguments
from command line
false
true
If Fs=fopen(arg[1],”r”
arg!
=3
true
Print invalid no
of arguments Print source If
file can not fs=NUL
be opened L
false
Ft=fopen(arg[2],”w”
false
Fclose(fs)
Ch=fgetc(fs)
true
Fclose(fs) If
Stop Fclose(ft) ch==EO
F
false
Fputc(ch,ft)
108
Program:
#include <stdio.h>
#include <conio.h>
#include <process.h>
{
puts("Target file cannot be opened.");
fclose(fs);
exit(0);
}
while(1)
{
ch=fgetc(fs);
if (ch==EOF) // check the condition if the file is end or not
break;
else
fputc(ch,ft);
}
fclose(fs);
fclose(ft);
getch();
}
109
Output:
source.c
this is source text
ouput.c
VIVA QUESATIONS:
1) What is file ?
Ans: The collection of alphabets is called file
Objective 28:
To reverse the first n characters in afile
Description:
This program perform the reverse operation of n characters in the file
Algorithm:
Step 1: Star
Step 2: read the command line arguments
Step 3: check if arguments=3 or not
If not print invalid no of arguments
Step 4: open source file in read mode
Step 5: if NULL pointer, then print file can not be open
Step 6: Store no of chars to reverse in k
K= *argv[2]-48
Step 7: read the item from file stream using fread
Step 8: Store chars from last position to initial position in another string(temp)
Step 9: print the temp string
Step 10: Stop
111
Read command
line args
false
Print invalid If Fp=fopen(argv[1],”r
no of args argc! ”
=3
true
Print file can If
not be fp==NUL
opened L
false
k=*argv[2]-48
n = fread(a,1,k,fp)
a[n]='\0'
len=strlen(a)
I = len-1 i—
false
I >=0
S[j+1]=’\0’
true
S[j]=a[i]
Print s[j]
Stop
J++
112
Program:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <process.h>
if(argc!=3)
{
puts("Improper number of arguments.");
exit(0);
}
fp = fopen(argv[1],"r");
if(fp == NULL)
{
puts("File cannot be opened.");
exit(0);
}
k=*argv[2]-48;
n = fread(a,1,k,fp);
a[n]='\0';
len=strlen(a);
for(i=len-1;i>=0;i--)
{
s[j]=a[i];
printf("%c",s[j]);
j=j+1;
}
s[j+1]='\0';
getch();
}
113
Output:
source.c
this is source
ouput.c
ecruos si siht
VIVA QUESATIONS:
1) List out the file handling functions ?
Ans: fopen(), fprintf(),fclose(),fscanf(),fgetc(),fputc(), etc..,
Objective 29:
Program that uses functions to perform the following operations on single linked
lists. i) creation ii) insertion iii) deletion iv) traversal
Description:
In this program we have to create a single linked list, insert the elements into that
list ,delete the some elements from that list and then perform the sorting operation
and traversal operation on that created linkedlist
Algorithm :
Step 1: Start
Step 6: Switch(choice)
Step 7: If(choice==1)
7.1 Assign fresh=malloc(size of (node))
7.2 Read the element fresh->data
7.3 Read the choice where to insert
7.4:Switch(choice)
7.4.1: If choice==1
7..4.2: Call the function IBegin()
7.4.3: If choice==2
7.4.4: Call the function Iend()
7.4.5: If choice==3
7.4.6: Call the function Imiddle()
Step 8: If(choice==2)
8.1: Read the position to delete
8.2: Switch(choice)
8.2.1: If choice==1
8..2.2: Call the function DBegin()
8.2.3: If choice==2
8.2.4: Call the function Dend()
8.2.5: If choice==3
8.2.6: Call the function Dmiddle()
Step 9: If choice==3
9.1 Call function view
115
Step 16:fresh->data=e
Flowchart:
118
Program:
# include<stdio.h>
# include<malloc.h>
struct link
{
int data;
struct link *next;
}*start,*new,*l,*l1,*start1,*t;
main()
{
clrscr();
start=NULL;
start1=NULL;
printf(" **** MENU **** ");
printf("\n 1.Insertion\n 2.Deletion\n 3.Traverse\n 4.Search\n 5.Sort\n 6.Merge\n
7.Reverse\n");
while(1)
{
printf("enter the choice:");
scanf("%d",&ch);
switch(ch)
{
case 1: insert();
break;
case 2: delete();
break;
case 3: traverse();
break;
case 4: search();
break;
case 5: sort();
break;
case 6: merge();
break;
case 7: reverse();
119
break;
case 8:exit();
}
}
getch();
}
insert()
{
l=start;
printf("enter the item to be inserted:");
scanf("%d",&item);
new=malloc(sizeof(struct link));
new->data=item;
if(start==NULL)
{
new->next=NULL;
start=new;
}
else
{
printf("1.start\n2.middle\n3.end\n");
printf("enter the place to place the item:");
scanf("%d",&ch);
if(ch==1)
{
new->next=start;
start=new;
}
if(ch==2)
{
printf("enter the position to place item:");
scanf("%d",&p);
for(i=1;i<p-1;i++)
l=l->next;
new->next=l->next;
l->next=new;
}
if(ch==3)
{
while(l->next!=NULL)
l=l->next;
120
new->next=NULL;
l->next=new;
}
}
}
/* END OF INSERT FUNCTION */
traverse()
{
if(start==NULL)
printf("LIST IS EMPTY\n");
else
{
for(l=start;l->next!=NULL;l=l->next)
if(l==start)
printf("\nstart:%d->",l->data);
else
printf("\n%7d->",l->data);
if(l->next==NULL)
printf("\n last:%d->\n",l->data);
}
}
delete()
{
l=start;
if(start==NULL)
printf("NO ITEMS IN THE LIST\n");
else
{
printf("1.start\n2.middle\n3.end\n");
printf("enter the place to delete the item:");
scanf("%d",&ch);
if(ch==1)
{
item=start->data;
printf("deleted item is:%d\n",item);
start=start->next;
}
if(ch==2)
121
{
printf("enter the position to delete item:");
scanf("%d",&p);
if(l->next==NULL)
{
item=l->data;
printf("deleted item is:%d\n",item);
l=start=NULL;
}
else
{
for(i=1;i<p-1;i++)
l=l->next;
item=l->next->data;
printf("deleted item is:%d\n",item);
l->next=l->next->next;
}
}
if(ch==3)
{
if(l->next==NULL)
{
item=l->data;
printf("deleted item is:%d\n",item);
l=start=NULL;
}
else
{
while(l->next->next!=NULL)
l=l->next;
item=l->next->data;
printf("deleted item is:%d\n",item);
l->next=NULL;
l=l->next;
}
}
}
}
search()
{
int f=0;
122
sort()
{
int t;
if(start==NULL)
printf("LIST IS EMPTY");
else
{
for(l1=start;l1->next!=NULL;l1=l1->next)
{
for(l=start;l->next!=NULL;l=l->next)
if(l->data > l->next->data)
{
t=l->data;
l->data=l->next->data;
l->next->data=t;
}
}
printf("THE SORTED ORDER IS:");
for(l=start;l!=NULL;l=l->next)
printf("%3d",l->data);
}
printf("\n");
}
123
merge()
{
printf("enter no of elements to be inserted in second list :");
scanf("%d",&n);
for(j=1;j<=n;j++)
{
l1=start1;
printf("enter the item to be inserted:");
scanf("%d",&item);
new=malloc(sizeof(struct link));
new->data=item;
new->next=NULL;
if(start1==NULL)
start1=new;
else
{
printf("1.start\n2.middle\n3.end\n");
printf("enter the place to place the item:");
scanf("%d",&ch);
if(ch==1)
{
new->next=start1;
start1=new;
}
if(ch==2)
{
printf("enter the position to place item:");
scanf("%d",&p);
for(i=1;i<p-1;i++)
l1=l1->next;
new->next=l1->next;
l1->next=new;
}
if(ch==3)
{
while(l1->next!=NULL)
l1=l1->next;
l1->next=new;
}
}
}
124
if(start==NULL)
start=start1;
else
{
l=start;
while(l->next!=NULL)
l=l->next;
for(l1=start1;l1->next!=NULL;l1=l1->next)
{
l->next=l1;
l=l->next;
}
}
printf(" *** LIST IS MERGED *** \n");
}
reverse()
{
if(start==NULL)
printf("LIST IS EMPTY\n");
else
{
l=start;
l1=t=NULL;
while(l!=NULL)
{
l1=t;
t=l;
l=l->next;
t->next=l1;
}
start=t;
printf(" *** LIST IS REVERSED ***\n");
}
}
2.Deletion
3.Traverse
4.Search
5.Sort
6.Merge
7.Reverse
enter the choice:1
enter the item to be inserted:1
enter the choice:1
enter the item to be inserted:2
1.start
2.middle
3.end
enter the place to place the item:1
enter the choice:1
enter the item to be inserted:3
1.start
2.middle
3.end
enter the place to place the item:3
enter the choice:1
enter the item to be inserted:4
1.start
2.middle
3.end
enter the place to place the item:2
enter the position to place item:3
enter the choice:3
start:2->
1->
4->
last:3->
enter the choice:4
enter the search item:4
item 4 found at position :3
enter the choice:6
enter no of elements to be inserted in second list :3
enter the item to be inserted:5
enter the item to be inserted:6
1.start
2.middle
3.end
enter the place to place the item:1
enter the item to be inserted:7
1.start
126
2.middle
3.end
enter the place to place the item:2
enter the position to place item:2
*** LIST IS MERGED ***
enter the choice:3
start:2->
1->
4->
3->
6->
7->
last:5->
enter the choice:7
*** LIST IS REVERSED ***
enter the choice:3
start:5->
7->
6->
3->
4->
1->
last:2->
enter the choice:4
enter the search item:1
item 1 found at position :6
enter the choice:5
THE SORTED ORDER IS: 1 2 3 4 5 6 7
enter the choice:2
1.start
2.middle
3.end
enter the place to delete the item:1
deleted item is:1
enter the choice:2
1.start
2.middle
3.end
enter the place to delete the item:3
deleted item is:7
enter the choice:2
1.start
2.middle
3.end
127
start:2->
3->
4->
last:6->
enter the choice:2
1.start
2.middle
3.end
enter the place to delete the item:1
deleted item is:2
enter the choice:2
1.start
2.middle
3.end
enter the place to delete the item:2
enter the position to delete item:2
deleted item is:4
enter the choice:3
start:3->
last:6->
enter the choice:2
1.start
2.middle
3.end
enter the place to delete the item:2
enter the position to delete item:2
deleted item is:6
enter the choice:2
1.start
2.middle
3.end
enter the place to delete the item:1
deleted item is:3
enter the choice:3
LIST IS EMPTY
enter the choice:2
NO ITEMS IN THE LIST
enter the choice:8
conclusion: the program is error free
VIVA QUESATIONS:
128
Objective 30:
Program that uses functions to perform the following operations on doubly
linked list i) creation ii) insertion iii) deletion iv) traversal
Description : In this program we have to create a doubly linked list, insert the
elements in to a doubly linked list, delete the elements from that list and finally
perform the traversal operation
ALGORITHM :
Step 1: Start
Step 7: Stop
Step 9: Read e
17.2: l=start
17.4: incrent i
17.5: l=l->next
17.8: new->next=new
17.10: l->next->pre=new
18.1: l=start
18.3: l=l->next
18.5: new->data=e
18.6: new->next=null
18.7: l->next=new
131
18.8: new->pre=l
Step23: if choice==1
23.1: temp=start->data
23.2: start=start->next
23.3: start->pre=null
Step24: if choice==2
24.2: l=start
24.4: l=l->next
24.5: increment I by 1
24.6: temp=l-next->data
24.7: l->next=l->next->next
24.8: l->next->pre=l
Step25: if choice==3
25.3: l=l->next
25.4: temp=l->next->data
132
25.5: l->next=null
Step29: if choice==1
29.1: l=next
Step30: if choice==2
30.1: l=start
30.4: l=l->pre
Flowchart:
133
Program:
134
#include<stdio.h>
#include<malloc.h>
struct link
{
int data;
struct link *next;
struct link *prev;
}*start,*new,*temp,*l,*l1,*t,*start1;
main()
{
start=NULL;
start1=NULL;
clrscr();
printf(" **** MENU ****");
printf("\n1.Insertion\n2.Deletion\n3.Traverse\n4.search\n5.sort\n6.merge\n
7.reverse\n8.exit\n");
while(1)
{
printf("enter your choice:");
scanf("%d",&ch);
switch(ch)
{
case 1:insert();
break;
case 2:delete();
break;
case 3:display();
break;
case 4:search();
break;
case 5:sort();
break;
135
case 6:merge();
break;
case 7:reverse();
break;
case 8:exit();
}
}
getch();
}
insert()
{
l=start;
printf("enter an item to be inserted:");
scanf("%d",&item);
new=malloc(sizeof(struct link));
new->data=item;
if(start==NULL)
{
new->prev=NULL;
new->next=NULL;
start=new;
}
else
{
printf("1.start\n2.middle\n3.end\n");
printf("enter the place to insert item:");
scanf("%d",&ch);
if(ch==1)
{
new->next=start;
new->prev=NULL;
start=new;
}
if(ch==2)
{
printf("enter the position to place item:");
scanf("%d",&p);
for(i=1;i<p-1;i++)
l=l->next;
new->prev=l;
136
new->next=l->next;
l->next=new;
}
if(ch==3)
{
while(l->next!=NULL)
l=l->next;
new->prev=l;
new->next=NULL;
l->next=new;
}
}
}
delete()
{
l=start;
if(start==NULL)
printf("*** LIST IS EMPTY ***");
else
{
printf("1.start\n2.middle\n3.end");
printf("enter the place to delete the item:");
scanf("%d",&ch);
if(ch==1)
{
item=start->data;
printf("deleted item is :%d",item);
start=start->next;
start->prev=NULL;
}
if(ch==2)
{
printf("enter the position to delete an item:");
scanf("%d",&p);
if(l->next==NULL)
{
item=l->data;
printf("deleted item is:%d",item);
l=start=NULL;
}
else
137
{
for(i=1;i<p-1;i++)
l=l->next;
item=l->next->data;
printf("deleted item is:%d",item);
l->next=l->next->next;
l->next->prev=l;
}
}
if(ch==3)
{
if(l->next==NULL)
{
item=l->data;
printf("deleted item is :%d",item);
l->prev=NULL;
l=start=NULL;
}
else
{
while(l->next->next!=NULL)
l=l->next;
item=l->next->data;
printf("deleted item is:%d",item);
l->next=NULL;
}
}
}
}
}
}
search()
{
int f=0;
if(start==NULL)
printf(" *** LIST IS EMPTY *** ");
else
{
printf("enter the search item:");
scanf("%d",&item);
for(l=start,i=1;l!=NULL;l=l->next,i++)
if(item==l->data)
{
f=1;
break;
}
if(f==1)
printf("item %d found at position %d",item,i);
else
printf("item %d not found in list",item);
}
}
sort()
{
int t;
if(start==NULL)
printf(" *** LIST IS EMPTY *** ");
else
{
for(l1=start;l1->next!=NULL;l1=l1->next)
for(l=start;l->next!=NULL;l=l->next)
if(l->data > l->next->data)
{
t=l->next->data;
l->next->data=l->data;
l->data=t;
139
}
printf("THE SORTED ORDER IS:");
for(l=start;l!=NULL;l=l->next)
printf("%3d",l->data);
}
printf("\n");
}
merge()
{
printf("enter number items to be inserted in second list:");
scanf("%d",&n);
for(j=1;j<=n;j++)
{
l1=start1;
printf("enter an item:");
scanf("%d",&item);
new=malloc(sizeof(struct link));
new->data=item;
if(start1==NULL)
{
new->prev=NULL;
new->next=NULL;
start1=new;
}
else
{
printf("1.start\n2.middle\n3.end\n");
printf("enter the place to insert item:");
scanf("%d",&ch);
if(ch==1)
{
new->next=start1;
new->prev=NULL;
start1=new;
}
if(ch==2)
{
printf("enter the position to place item:");
scanf("%d",&p);
for(i=1;i<p-1;i++)
140
l1=l1->next;
new->prev=l1;
new->next=l1->next;
l1->next=new;
}
if(ch==3)
{
while(l1->next!=NULL)
l1=l1->next;
new->prev=l1;
new->next=NULL;
l1->next=new;
}
}
}
if(start==NULL)
start=start1;
else
{
l=start;
while(l->next!=NULL)
l=l->next;
for(l1=start1;l1->next!=NULL;l1=l1->next)
{
l->next=l1;
l=l->next;
}
}
printf(" *** LIST IS MERGED *** \n");
}
reverse()
{
if(start==NULL)
printf(" *** LIST IS EMPTY ***\n ");
else
{
l=start;
l1=t=NULL;
while(l!=NULL)
{
l1=t;
141
t=l;
l=l->next;
t->next=l1;
}
start=t;
printf(" *** LIST IS REVERSED *** \n");
}
}
Input/Output:
start: 20
50
10
40
last: 30
enter your choice:6
enter number items to be inserted in second list:3
enter an item:60
enter an item:70
1.start
2.middle
3.end
enter the place to insert item:3
enter an item:80
1.start
2.middle
3.end
enter the place to insert item:1
*** LIST IS MERGED ***
enter your choice:3
start:20
50
10
40
30
80
60
last:70
enter your choice:4
enter the search item:80
143
start:20
30
50
60
last: 70
enter your choice:2
1.start
2.middle
144
3.end
enter the place to delete the item:2
enter the position to delete an item:4
deleted item is:60
enter your choice:2
1.start
2.middle
3.end
enter the place to delete the item:4
enter your choice:3
start:20
30
50
last: 70
last:70
enter your choice:2
1.start
2.middle
3.end
enter the place to delete the item:1
deleted item is :70
enter your choice:3
*** LIST IS EMPTY ***
enter your choice:2
*** LIST IS EMPTY ***
enter your choice:8
VIVA QUESATIONS:
1) List out the ypes of linked lists ?
Ans: i) circular linked lists ii) doubly linked lists, iii) circular doubly linked list
2) What are the various operations performed on the linked lists ?
Ans: i) creating a list, ii) traversing the list iii) inserting an item etc..,
3) Another name for doubly linked list ?
Ans: two-way linked list.
Objective 31:
146
Program that implement stack and its operation by using the arrays
Description:
In this program we have to implement the stack operation by using the
arrays. Here they stack operation are push and pop. Push operation is used
to insert the elements into a stack and pop operation is used to remove the
elements in to a stack
ALGORITHM FOR INSERTING AN ELEMENT IN A STACK:
Function Push(s,top,x)
Step 1: [Check for stack overflow]
If top>=n
Then printf(“stack overflow”)
Return
Step 2: [Increment Top]
Top<-top+1
Step 4:[finished]
Return
Step 4:[finished]
Return
Flowchart:
147
Program:
148
# include <stdio.h>
# define size 4
int choice,top=0,a[size],item;
main()
{
clrscr();
while(1)
{
printf(" *** MENU ***\n 1. PUSH\n 2. POP\n 3.
TRAVERSE\n 4. EXIT\n");
printf("enter your choice from menu:");
scanf("%d",&choice);
switch(choice)
{
case 1:push();
break;
case 2:pop();
break;
case 3:traverse();
break;
case 4:exit();
default:printf("wrong choice\n");
}
}
getch();
}
push()
{
if(size==top)
printf("*** stack is full ***\n");
else
{
printf("enter the item to be pushed into the stack:");
scanf("%d",&item);
top++;
a[top]=item;
}
}
pop()
{
if(top==0)
printf("*** stack is empty ***\n");
else
{
149
item=a[top];
top--;
printf("the deleted item from stack is %d\n",item);
}
}
traverse()
{
int i;
if(top==0)
printf("**** stack is empty ****");
else
{
printf("*** stack display ***\n");
for(i=1;i<=top;i++)
if(i==top)
printf("%d at %d ->top\n",a[i],i);
else
printf("%d at %d\n",a[i],i);
}
}
Input/Output:
2. POP
3. TRAVERSE
4. EXIT
enter your choice from menu:1
enter the item to be pushed into the stack:14
*** MENU ***
1. PUSH
2. POP
3. TRAVERSE
4. EXIT
enter your choice from menu:1
*** stack is full ***
*** MENU ***
1. PUSH
2. POP
3. TRAVERSE
4. EXIT
enter your choice from menu:3
*** stack display ***
11 at 1
12 at 2
13 at 3
14 at 4 ->top
*** MENU ***
1. PUSH
2. POP
3. TRAVERSE
4. EXIT
enter your choice from menu:2
the deleted item from stack is 14
*** MENU ***
1. PUSH
2. POP
3. TRAVERSE
4. EXIT
enter your choice from menu:2
the deleted item from stack is 13
*** MENU ***
1. PUSH
2. POP
3. TRAVERSE
4. EXIT
enter your choice from menu:2
the deleted item from stack is 12
1. PUSH
2. POP
3. TRAVERSE
4. EXIT
enter your choice from menu:2
the deleted item from stack is 11
*** MENU ***
1. PUSH
2. POP
3. TRAVERSE
4. EXIT
enter your choice from menu:2
*** stack is empty ***
*** MENU ***
1. PUSH
2. POP
3. TRAVERSE
4. EXIT
enter your choice from menu:3
**** stack is empty ****
*** MENU ***
1. PUSH
2. POP
3. TRAVERSE
4. EXIT
enter your choice from menu:4
VIVA QUESATIONS:
1) Define Stack ?
Ans: A stack is a linear data structure in which a data item is inserted and deleted at one
end
2) Define data structure ?
Ans: A data structure is a collection of organized data that are related to each other
Objective 32:
152
Algorithm:
Step 1: Start
Step 2: Declare the structure for the stack pointers.
Step 3: Define the push function
Step 4: Define the pop function
Step 5: Define the display function
Step 6: Read the choice
Step 7: if choice = push
Create a cell for the TOP cell in the stack.
Place the date in the TOP cell
Place the TOP pointer to the new cell
Step 8: if choice=pop
Check if empty stack. If so, print stack is empty.
Otherwise, remove the TOP cell.
Step 9: if choice=display
Display all the elements in the Stack.
Step 10: Stop
153
Flowchart: Start
Define push( )
Define pop( )
Define display ( )
Read choice,
num1=0,num2=0
While(1
)
Read choice
Switch choice
stop
154
PUSH( )
Read
element,st_point
er
M=(struct st_point*)malloc(sizeof(struct st_point))
M ->elec=j
M -> l=t
T=m
Return to main
program
Pop ( )
F T
If
t=NULL
I = t->ele Print stack is
empty
T =t -> l
Return i
Return to main
program
155
Display ( )
Pointer = t
While(pointer!
=
NULL)
true
Pointer=pointer->1
Program:
#include<stdio.h>
#include<conio.h>
struct st_point
{
int ele;
struct st_point *l;
}
*t;
int i;
156
void main()
{
char choice,num1=0,num2=0;
int i;
while(1)
{
clrscr();
printf("======================================");
printf("\n\t\t MENU ");
printf("\n======================================");
printf("\n[1] Using Push Function");
printf("\n[2] Using Pop Function");
printf("\n[3] Elements present in Stack");
printf("\n[4] Exit\n");
printf("\n\tEnter your choice: ");
fflush(stdin);
scanf("%c",&choice);
switch(choice-'0')
{
case 1:
{
printf("\n\tElement to be pushed:");
scanf("%d",&num1);
push_ele(num1);
break;
}
case 2:
{
num2=pop_ele(1);
printf("\n\tElement to be popped: %d\n\t",num2);
getch();
break;
}
case 3:
{
printf("\n\tElements present in the stack are:\n\t");
display_ele();
getch();
157
break;
}
case 4:
exit(1);
break;
default:
printf("\nYour choice is invalid.\n");
break;
}
}
}
/*Inserting the elements using push function*/
void push_ele(int j)
{
struct st_point *m;
m=(struct st_point*)malloc(sizeof(struct st_point));
m->ele=j;
m->l=t;
t=m;
return;
}
pointer=t;
while(pointer!=NULL)
{
printf("%d\t",pointer->ele);
pointer=pointer->l;
}
}
Output:
======================================
MENU
======================================
[1] Using Push Function
[2] Using Pop Function
[3] Elements present in Stack
[4] Exit
Element to be pushed:23
======================================
MENU
======================================
[1] Using Push Function
[2] Using Pop Function
[3] Elements present in Stack
[4] Exit
Element to be popped: 23
159
======================================
MENU
======================================
[1] Using Push Function
[2] Using Pop Function
[3] Elements present in Stack
[4] Exit
VIVA QUESATIONS:
1) Define Stack ?
Ans: A stack is a linear data structure in which a data item is inserted and deleted at one
end
2) Define data structure ?
Ans: A data structure is a collection of organized data that are related to each other
Objective 33:
Program that implement Queue operation by using the arrays
Description: In this program we have to implement the Queue operation by using the
arrays. Here they Queue operation are push and pop. Push operation is used to insert the
elements into a Queue and pop operation is used to remove the elements in to a Queue.
ALGORITHM FOR INSERTING AN ELEMENT IN TO A QUEUE:
Function QINSERET(Q,F,R,N,Y)
Step 1: [overflow]
If R>=N
Then printf(“ overflow”)
Return
Step 2: [Increment rear pointer]
R<-R+1
Function QDELETE(Q,F,R)
Step 1: [Underflow]
If F=0
Then printf(“Queue underflow”)
Return(0)
Step 2: [Delete element]
y<-q[f]
Flowchart:
162
Program:
# include <stdio.h>
# define size 4
int front=0,rear=-1,item,choice,a[size];
main()
{
clrscr();
while(1)
{
printf("*** MENU ***\n 1. INSERTION\n 2. DELETION\n
3.TRAVERSE\n 4. EXIT\n");
printf("enter your choice:");
scanf("%d",&choice);
switch(choice)
{
case 1:insertion();
break;
case 2:deletion();
break;
case 3:traverse();
break;
case 4:exit();
default:printf("*** wrong choice ***\n");
}
}
getch();
}
insertion()
{
if(rear==size-1)
printf("*** queue is full ***\n");
else
{
printf("enter item into queue:");
scanf("%d",&item);
rear++;
a[rear]=item;
}
}
deletion()
{
if(front==rear+1)
printf("*** queue is empty ***\n");
else
{
163
item=a[front];
front++;
printf("the deleted item from queue is %d\n",item);
}
}
traverse()
{
int i;
if(front==rear+1)
printf("*** queue is empty ***\n");
else
{
for(i=front;i<=rear;i++)
if(i==front && rear==i)
printf("%d at %d ->front=rear\n",a[i],i);
else
if(i==rear)
printf("%d at %d ->rear\n",a[i],i);
else
if(i==front)
printf("%d at %d ->front\n",a[i],i);
else
printf("%d at %d\n",a[i],i);
}
}
Input/Output:
3. TRAVERSE
4. EXIT
enter your choice:1
enter item into queue:13
*** MENU ***
1. INSERTION
2. DELETION
3. TRAVERSE
4. EXIT
enter your choice:1
enter item into queue:14
*** MENU ***
1. INSERTION
2. DELETION
3. TRAVERSE
4. EXIT
enter your choice:1
*** queue is full ***
*** MENU ***
1. INSERTION
2. DELETION
3. TRAVERSE
4. EXIT
enter your choice:3
11 at 0 ->front
12 at 1
13 at 2
14 at 3 ->rear
*** MENU ***
1. INSERTION
2. DELETION
3. TRAVERSE
4. EXIT
enter your choice:2
the deleted item from queue is 11
*** MENU ***
1. INSERTION
2. DELETION
3. TRAVERSE
4. EXIT
enter your choice:2
the deleted item from queue is 12
*** MENU ***
1. INSERTION
2. DELETION
3. TRAVERSE
165
4. EXIT
enter your choice:2
the deleted item from queue is 13
VIVA QUESATIONS:
1) Define queue ?
Ans: A queue is a linear, sequential list of that are accessed in the oeder first in first
out(FIFO).
2) Define circular queues ?
Ans: A queue can also be circular in which case, it is called as a circular queue
3) What are the various stack oriented notations ?
Ans: i) infix ii) prefix iii) postfix
166
Objective 34:
Program that implement Queue operation by using the pointers
Description:
In this program we have to implement the Queue operation by using the pointers.
Here they Queue operation are push and pop. Push operation is used to insert the
elements into a Queue and pop operation is used to remove the elements in to a
Queue.
Algorithm:
Step 1: Start
Step 2: define structure for queue
Step 3: read choice
Step 4: if choice = insert
i) read the element
ii) create a data structure
iii) if empty queue then front of queue pinter points to newly created data
structure
iv) otherwise end of the queue points to newly created data structure
Step 5: if choice= remove
i) check if queue is empty . if so, print queue is empty
ii) otherwise read the element pointed by front of the queue temp pointer
points to front of queue
iii) front of queue points to next element
iv) free the element pointed by temp pointer
v) return the element
vi) print the element
Step 6: if choice = display
i) check of empty queue if so, print queue empty
ii) otherwise print the elements from front of the queue until the end of the
queue
step 7: if choice=exits stop
167
Flowchart: start
T F
If
choice=inse
rt
T
Read the element F
to be inserted If
choice=remo
ve
Queue ->ele=ele F
Queue ->n=NULL If !
e_que()
Print
queue is
T
T F empty
If
f_ptr=NUL
L T
B
F+ptr=queue
Ptr=f_ptr ptr ->n!=NULL
Ptr->n=queue
Print j
F
If
choice=displ
ay B
T
F
T If
choice=ex
Ptr=f_ptr it
Print invalid
stop choice
A
168
T F
If
empty
queue
If ptr!
Print empty =NULL
queue
T
program:
#define true 1
#define false 0
#include<stdio.h>
#include<conio.h>
#include<process.h>
struct q_point
{
int ele;
struct q_point* n;
};
int e_que(void);
void add_ele(int);
int rem_ele(void);
void show_ele();
/*main function*/
void main()
{
169
int ele,choice,j;
while(1)
{
clrscr();
printf("\n\n****IMPLEMENTATION OF QUEUE USING
POINTERS****\n");
printf("==============================================");
printf("\n\t\t MENU\n");
printf("==============================================");
printf("\n\t[1] To insert an element");
printf("\n\t[2] To remove an element");
printf("\n\t[3] To display all the elements");
printf("\n\t[4] Exit");
printf("\n\n\tEnter your choice:");
scanf("%d", &choice);
switch(choice)
{
case 1:
{
printf("\n\tElement to be inserted:");
scanf("%d",&ele);
add_ele(ele);
getch();
break;
}
case 2:
{
if(!e_que())
{
j=rem_ele();
printf("\n\t%d is removed from the queue",j);
getch();
}
else
{
printf("\n\tQueue is Empty.");
getch();
}
break;
}
case 3:
170
show_ele();
getch();
break;
case 4:
exit(1);
break;
default:
printf("\n\tInvalid choice.");
getch();
break;
}
}
}
if(e_que()==false)
{
int j = f_ptr->ele;
queue=f_ptr;
f_ptr = f_ptr->n;
free (queue);
return j;
}
else
{
printf("\n\tQueue is empty.");
return -9999;
}
}
Output:
[4] Exit
Element to be inserted:23
VIVA QUESATIONS:
1) Define queue ?
Ans: A queue is a linear, sequential list of that are accessed in the oeder first in first
out(FIFO).
2) Define circular queues ?
Ans: A queue can also be circular in which case, it is called as a circular queue
3) What are the various stack oriented notations ?
Ans: i) infix ii) prefix iii) postfix
174
Objective 35: Program that uses the stack operation to perform the following
i) converting infix expression into postfix expression
ii) evaluating the postfix expression
Description:
In this program we have to covert the given infix expression to postfix expression
and the finally evaluating that postfix expression. Here we made use of stack
operations. The property of stacks is last in first out. i.e., the item that is inserted
last will be the firt item remove.
ALGORITHM:
Step 1. start
Step 2. first initialize the stack to be empty
Step 3. for each character in the input string
If input string is an operand, append to the output
if the input string is a left paranthesis , push it onto the stack
else
if stack is empty or the operator has higher priority than the operator on
the topof stack or
the top of the stack is opening parenthesis
then
push the operator onto the stack
else
pop the operator from the stack and append to the output
Step 4. if the input string is a closing parenthesis , pop operators from the stack
and append the operators
to the output until an opening parenthesis is encountered. Pop the
opening parenthesis from the stack
and discard it.
Step 5. if the end of the input string is encountered , then iterate the loop until the
stack is not empty. Pop
the stack and append the remaining input string to the output.
Step 6. stop
175
2 + (5-8)/3 = 258-3/+
Input 2 input 5 input 8
8
5
5
2 2
2
3
-3 -3
2 2
2
Input 1 input +
-1 1
2
Program:
176
#include<stdio.h>
#include<ctype.h>
#include<string.h>
static char str[20];
int top=-1;
main()
{
char in[20],post[20],ch;
int i,j,l;
clrscr();
printf("enter the string");
gets(in);
l=strlen(in);
for(i=0,j=0;i<l;i++)
if(isalpha(in[i]))
post[j++]=in[i];
else
{
if(in[i]=='(')
push(in[i]);
else if(in[i]==')')
while((ch=pop())!='(')
post[j++]=ch;
else
{
while(priority(in[i])<=priority(str[top]))
post[j++]=pop();
push(in[i]);
}
}
while(top!=-1)
post[j++]=pop();
post[j]='\0';
printf("\n equivalent infix to postfix is:%s",post);
getch();
}
priority (char c)
{
switch(c)
{
case'+':
case'-': return 1;
177
case'*':
case'/':
return 2;
case'$':
return 3;
}
return 0;
}
push(char c)
{
str[++top]=c;
}
pop()
{
return(str[top--]);
}
Input/Output:
ii)ALGORITHM:
Step 1: Start
Step 5: If isdigit(ch)
178
Step 5.1:Push(ch)
Step 6: otherwise
Step 6.1:op1=pop()
Step 7: c=op2+op1
Step 8: Push(c)
Step 9: c=op2-op1
Step 14:Push(c)
Step 16:Push(int x)
Step 19:pop()
Step 22:s1.top—
Step 23:return x
Flowchart:
a+b = ab+
Push a Pop a
Push + Push b
+ +
Pop ab+
Program:
180
#include<stdio.h>
#include<ctype.h>
int stk[10],top=0,op1,op2,i;
main()
{
char postexp[10];
clrscr();
printf("enter the postfix expression:");
gets(postexp);
for(i=0;postexp[i]!='\0';i++)
{
if(isdigit(postexp[i]))
push(postexp[i]-48);
else
{
op1=pop();
op2=pop();
switch(postexp[i])
{
case '+':push(op1+op2);
break;
case '-':push(op1-op2);
break;
case '*':push(op1*op2);
break;
case '/':push(op1/op2);
break;
case '%':push(op1%op2);
break;
case '.':exit();
}
}
}
printf("the result of postfixexpression is: %d",pop());
getch();
}
pop()
{
return(stk[top--]);
}
push(int x)
{
181
top++;
stk[top]=x;
}
Input/Output:
VIVA QUESATIONS:
1) Define Stack ?
Ans: A stack is a linear data structure in which a data item is inserted and deleted at one
end
2) Define data structure ?
Ans: A data structure is a collection of organized data that are related to each other
Description: The data structure tree is of non linear type. Binary tree is bit special. The
proparty of a binary tree is the value at the root must be grater than the left node and less
than the right node. The binary tree consist of almost two childrens. Tree is a recursive
data structure and recursive programming techniques are popularly used in trees. A tree
can can be traversed in three major ways
i) Inorder traversal: here left child is visited first followed by root and finally by
right child.
ii) Preorder traversal: Here root is visitedfirst follwed by left child and finally by
right child.
iii) Postorder traversal: Here left child is visited first followed by right child
finally by the root.
ALGORITHM:
Step 1: Start
Step 7: If choice=1
Step 1: Start
Step 2: If t= null
Step 6: Temp->rc=null
Step 11:Return t
Step 1: Start
Step 2: x=d
184
Step 4: If x->data =t
Strep 5:Break
Step 6: Parent =x
Step 7: if t<x->data
Step 8: t=tlc
Step 9: t=lrc
Step11: parent =x
Step12: If parent==null
Step 19:x->data=insert->data
Step 20:x=insert
Step 1: Start
Step 2: If t!=null
185
Step 6: Stop
Step 1: Start
Step 2: If t!=null
Step 6: Stop
Step 1: Start
Step 2: If t!=null
Step 6: Stop
Flowchart:
186
187
Program:
188
#include<stdio.h>
#include<alloc.h>
struct bstnode
{
int data;
struct bstnode *lc,*rc;
}*root,*a[20],*b[20];
int top=-1,top1=-1,n,i;
main()
{
int ch,ele;
struct bstnode *t,*insert(),*pop();
clrscr();
t=root=NULL;
while(1)
{
printf("\n **** M E N U **** \n");
printf("1.INSERT\n2.RECURSSIVE TRAVERSE\n3.NON-RECURSIVE
TRAVERSE\n4.EXIT\n");
printf("Enter your choice: ");
scanf("%d",&ch);
switch(ch)
{
case 1: printf("Enter how many elements u want to insert:");
scanf("%d",&n);
printf("Enter tree elements: ");
for(i=1;i<=n;i++)
{
scanf("%d",&ele);
t=insert(t,ele);
}
break;
case 2: /* RECURSSIVE TRAVERSE */
if(t==NULL)
printf("**** TREE IS EMPTY ****");
else
{
printf("INORDER :");
inorder(t);
printf("\nPREORDER :");
preorder(t);
printf("\nPOSTORDER :");
postorder(t);
}
break;
189
{
if(x!=NULL)
{
printf("%3d",x->data);
preorder(x->lc);
preorder(x->rc);
}
}
postorder(struct bstnode *x)
{
if(x!=NULL)
{
postorder(x->lc);
postorder(x->rc);
printf("%3d",x->data);
}
}
nrinorder(struct bstnode *x)
{
struct bstnode *l;
l=x;
do
{
while(l!=NULL)
{
push(l);
l=l->lc;
}
while(top>-1)
{
l=pop();
printf("%d",l->data);
if(l->rc!=NULL)
{
l=l->rc;
break;
}
else
l=NULL;
}
}while(l!=NULL);
}
nrpreorder(struct bstnode *x)
{
struct bstnode *l;
l=x;
191
do
{
printf("%d",l->data);
if(l->rc!=NULL)
push(l->rc);
l=l->lc;
if(l==NULL&&top>-1)
l=pop();
}while(l!=NULL);
}
nrpostorder(struct bstnode *x)
{
struct bstnode *l;
l=x;
do
{
while(l!=NULL)
{
push(l);
if(l->rc!=NULL)
{
push(l->rc);
b[++top1]=l->rc;
}
l=l->lc;
}
do
{
l=pop();
if(l!=b[top1])
printf("%3d",l->data);
else
{
top1-=1;
break;
}
} while(top>-1);
}while(l!=NULL&&top>-1);
}
push(struct bstnode *y)
{
top+=1;
a[top]=y;
}
struct bstnode *pop()
{
192
return a[top--];
}
Input/Output:
VIVA QUESATIONS:
Objective 37:
193
Description: The linear search is most simple serching method. It does not expect the list
to be sorted. The key which is to be searched is compared with each element of the list
one by one. If a match exists, the search is terminated. If the end of list is reached it
means that the search has failed and key has no matching in the list.
ALGORITHM:
LINEAR SEARCH
1. Start
5. search<--linear(a,n,x)
9. stop
LINEAR FUNCTION
1. start
2. for i=1 to n increment in steps of 1
3. if m equal to k[i] goto step 4 otherwise goto step 2
4. return i
5. return 0
6. stop
Flowchart:
194
start
Read n
i=1
i<=n i++
Read a[i]
Read b
C=linear search(a,b)
T F
If c!
=0
stop
195
start
F
For(i=1;i<n;i++)
F
If
m==k[i]
stop
196
Program:
#include<stdio.h>
main()
{
int i,j,n,a[10],key;
clrscr();
printf("enter range for array:");
scanf("%d",&n);
printf("enter elements into array:");
for(i=0;i<=n;i++)
scanf("%d",&a[i]);
printf("enter the search element:");
scanf("%d",&key);
for(i=0;i<=n;i++)
{
if(key==a[i])
{
printf("element %d found at %d",key,i);
break;
}
else
if(i==n)
printf("element %d not found in array",key);
}
getch();
}
Input/Output:
enter range for array:4
enter elements into array:56
43
12
88
9
enter the search element:9
element 9 found at 4
VIVA QUESATIONS:
sorted. The key which is to be searched is compared with each element of the list one by
one. If a match exists, the search is terminated. If the end of list is reached it means that
the search has failed and key has no matching in the list.
198
Objective 38:
Description: Binary search is a vast improvement over the sequential search. For binary
search to work, the item in the list must be in assorted order. The approach employed in
the binary search is divid and conquer. If the list to be sorted for a specific item is not
ALGORITHM:
BINARY SEARCH
1. Start
2. Read the value of n
3. for i=1 to n increment in steps of 1
Read the value of ith element into array
4. Read the element(x) to be searched
5. search<--binary(a,n,x)
6. if search equal to 0 goto step 7 otherwise goto step 8
7. print unsuccessful search
8. print successful search
9. stop
1. start
2. initialise low to 1 ,high to n, test to 0
3. if low<= high repeat through steps 4 to 9 otherwise goto step 10
Flowchart:
200
201
Program:
#include<stdio.h>
main()
{
int i,n,key,a[10],low,high,mid;
clrscr();
printf("enter range for array:");
scanf("%d",&n);
printf("enter elements into array:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("the search element:");
scanf("%d",&key);
low=0;
high=n-1;
for(i=0;i<n;i++)
{
mid=(low+high)/2;
if(a[mid]==key)
{
printf("element %d found at %d",key,mid);
break;
}
if(key<a[mid])
high=mid;
else
low=mid+1;
if(i==n-1)
printf("element %d not found in array",key);
}
getch();
}
Input/Output:
VIVA QUESATIONS
work, the item in the list must be in assorted order. The approach employed in the binary
search is divid and conquer. If the list to be sorted for a specific item is not sorted, binary
search fails.
203
Objective 39:
Program that implements the bubble sort method
Description: Bubble sort is the simplest and oldest sorting technique. This method takes
two elements at a time. It compare these two elements. If first elements is less than
second one, they are left undistrurbed. If the first element is greater then second one then
they are swapped. The procedure continues with the next two elements goes and ends
when all the elements are sorted.
But bubble sort is an inefficient algorithm. The order of
bubble sort algorithm is O(n2).
Algorithm:
i)Bubble Sort:
1. start
2. read the value of n
3. for i= 1 to n increment in steps of 1
Read the value of ith element into array
4. call function to sort (bubble_sort(a,n))
5. for i= 1 to n increment in steps of 1
print the value of ith element in the array
6. stop
1. start
2. initialise last to n
3. for i= 1 to n increment in steps of 1
begin
4. initialise ex to 0
5. for i= 1 to last-1 increment in steps of 1
begin
6. if k[i]>k[i+1] goto step 7 otherwise goto step 5
begin
7. assign k[i] to temp
assign k[i+1] to k[i]
assign temp to k[i+1]
increment ex by 1
end-if
end inner for loop
11. if ex!=0
assign last-1 to last
end for loop
12. stop
204
Flowchart:
205
Program:
#include<stdio.h>
main()
{
int i,j,t,a[5],n;
clrscr();
printf("enter the range of array:");
scanf("%d",&n);
printf("enter elements into array:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
printf("the sorted order is:");
for(i=0;i<n;i++)
printf("\t%d",a[i]);
getch();
}
Input/Output:
enter the range of array:3
enter elements into array:3
2
1
the sorted order is: 1 2 3
VIVA QUESATIONS
206
Objective 40:
207
Algorithm:
Quick Sort:
1. start
2. if lowerbound < upperbound repeat through steps 3 to 13 otherwise
goto step 14
begin
3. assign lowerbound to i,upperbound to j, i to pivot
4. if i<j repeat through steps 5 to 10 otherwise goto step _
Begin
5. if a[i]<=k[pivot] and i< upperbound repeat through step 6 otherwise
goto step 7
begin
6. assign i+1 to i
end if
7. if k[j] > k[pivot] repeat through step 8 otherwise goto step 9
begin
8. assign j-1 to j
end if
9. if i< j goto step 10 other wise goto step 4
Begin
10. call function to swap k[i] and k[j]
end if
end if
11. call function to swap k[pivot] and k[j]
12. call function qsort(x,lowerbound,j-1)
13. call function qsort(x,j+1,upperbound)
end if
14. stop
Flowchart:
208
Program:
209
#include<stdio.h>
main()
{
int x[10],i,n;
clrscr();
printf("enter no of elements:");
scanf("%d",&n);
printf("enter %d elements:",n);
for(i=1;i<=n;i++)
scanf("%d",&x[i]);
quicksort(x,1,n);
printf("sorted elements are:");
for(i=1;i<=n;i++)
printf("%3d",x[i]);
getch();
}
quicksort(int x[10],int first,int last)
{
int pivot,i,j,t;
if(first<last)
{
pivot=first;
i=first;
j=last;
while(i<j)
{
while(x[i]<=x[pivot] && i<last)
i++;
while(x[j]>x[pivot])
j--;
if(i<j)
{
t=x[i];
x[i]=x[j];
x[j]=t;
}
}
t=x[pivot];
x[pivot]=x[j];
x[j]=t;
quicksort(x,first,j-1);
quicksort(x,j+1,last);
}
}
210
enter no of elements:6
enter 6 elements:23
12
45
34
21
87
sorted elements are: 12 21 23 34 45 87
conclusion: The program is error free
VIVA QUESATIONS
Description: Insertion sort is similar to playing cards. To sort the cards in yourhand you
extrat a card shift the remaining cards and then insert the extracted card in its correct
place. The efficiency of insertion sort is O(n2).
Algorithm:
Flowchart:
212
Program:
213
#include<stdio.h>
main()
{
int i,j,t,a[10],n,p=0;
clrscr();
printf("enter the range of array:");
scanf("%d",&n);
printf("enter elements into array:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
{
t=a[i];
for(p=i;p>0 && a[p-1]>t;p--)
a[p]=a[p-1];
a[p]=t;
}
printf("the sorted order is:");
for(i=0;i<n;i++)
printf("\t%d",a[i]);
getch();
}
***** OUTPUT *****
VIVA QUESATIONS
214
Objective 42:
215
Description:
The merge sort splits the list to be sorted into two equal halves, and places them
in separate arrays. Each array is recursively sorted, and then merged back together
to form the final sorted list. Like most recursive sorts, the merge sort has an
algorithmic complexity of O(n log n).
Flow chart:
216
Start
j<MAX_ARY
True
Display the
elements before
merge sort
Mergesort(ary,0,MAX_ARY-1)
J=0 j++
False j<MAX_ARY
True
Display the
elements after
merge sort
Stop
217
Merge_sort()
Size=start-end+1
Mid=0 Mrg1=0 Mrg2=0
If end==start
Mid=(end+start)/2
Call merge_sort(x,end,mid)
Call merge_sort(x,mid+1,start)
j=0
j++
j<size
False
True
j++ Executing[j]=x[end+j]
j=0 Mrg1=0
j<size
F
T True
If mrg2<=start- If mrg1<=mid-
end end
False False
True
X[j+end]=executing[mrg1++] X[j+end]=executing[mrg2++]
False
X[j+end]=executing[mrg1++] If executing[mrg1]>
executing[mrg2]
Program:
#include <stdio.h>
#include <stdlib.h>
#define MAX_ARY 10
int main(void) {
int ary[MAX_ARY];
int j = 0;
printf("\n");
printf("\n");
getch();
}
if(end == start)
return;
219
mrg1 = 0;
mrg2 = mid - end + 1;
Ans: The merge sort splits the list to be sorted into two equal halves, and places
them in separate arrays. Each array is recursively sorted, and then merged back
together to form the final sorted list.
Objective 43:
To implements the Lagrange interpolation and Newton Gregory forward interpolation
Lagrange Interpolation :
Algorithm:
Step2. for i=1 to (n+1) is steps of 1 do Read xi,fi end for {the above
statements reads x,s and the corresponding values of f is }
Step 3. Sum=0
Step 5. Profvnc=1
Flow chart:
222
Program:
#include<stdio.h>
#include<math.h>
Main()
{
Float y, x[20],f[20],sum,pf;
Int I,j,n;
Printf(“enter the value of n”);
Scanf(“%d”,&n);
Printf(“enter the value to be found”);
Scanf(“%f”,&y);
Printf(“enter the values of xi’s & fi’s”);
For(i=0;i<n;i++)
{
Pf=1;
For(j=0;j<n;j++)
{
If(j!=i)
Pf *= (y-x[j])/(x[i] – x[j]);
}
Sum += f[i] *pf;
}
Printf(“\nx = %f ”,y);
Printf(“\n sum =%f ”,sum);
}
Input/Output:
VIVA QUESATIONS
Algorithm:
Step1: START
Step2: Read n
Step4: read x
Step5: h←xi-x0
Step6: p←(x-xo)/n
Step8: k←n-2
Step10: Sumy←y0
Step11: Pvalue←1
Step15: STOP
224
Flowchart:
225
Program:
#include<stdio.h>
#include<math.h>
Main()
{
Int i, j, n, k, l;
Float sumy, h, term, p, z, pvalue;
Float x[25], y[25], d[25][25], factvalue;
Printf(“enter the value of n”);
Scanf(“%d”,&n);
Printf(“enter %d values for x, y \n”,n);
For(i=0;i<n;i++)
Scanf(“%f %f”, &x[i], &y[i]);
Printf(“\n enter z”);
Scanf(“%f”,&z);
h = x[1] – x[0];
p = (z - x[0] )/ h;
for(j=0; j<n-2; j++)
d[i][j] =y[j+1] – y[j];
k=n-2;
for(i=2; i<n; i++)
{
k++;
for(j=0; j<=k; j++)
d[i][j] =d[i-1][j+1] – d[i-1][j];
}
For(l=1; l<n; l++)
{
Pvalue *= (p-(l - 1));
Factvalue *= 1;
Term = pvalue* d[l][0] / factvalue;
Sumy += term;
}
Printf(“\n y value at z = %f is %f”, z, sumy);
}
226
Input/Output:
Enter n 7
Enter 7 data values for x, y
1921 35
1931 42
1941 58
1951 84
1961 120
1971 165
1981 220
Enter z 1925
Y value at z = 1925.000000 is 36.756710
Conclusion: The program is error free
VIVA QUESATIONS
Objective 44:
Implement in ‘C’ the linear regression and polynomial regression algorithms
Linear regression
Algorithm:
Step 1. Read n
Step 2. Sumx=0
Step 3. Sumxsq=0
Step 4. Sumy=0
Step 5. Sumxy=0
Step 6. fori=1 to n do
Step 8. Sumx=sumx+x
Step 9.Sumxsq=Sumxsq+x2
Step 10.Sumy=Sumy+y
Program:
#include<stdio.h>
#include<math.h>
Main()
{
Int n,I;
Float sumx, sumxsq, sumy, sumxy, x, y, a0, a1, denom;
Printf(“enter the n value”);
Scanf(“%d”,&n);
Sumx=0;
Sumsq=0;
Sumy=0;
Sumxy=0;
For(i=0;i<n;i++)
{
Scanf(“%f %f”,&x, &y);
Sumx +=x;
Sumsq += pow(x, 2);
Sumy +=y;
Sumxy +=x * y;
}
Denom = n * sumxsq – pow(sumx, 2);
A0 = (sumy * sumxsq –sumx *sumxy)/denom;
A1 = (n * sumxy –sumx *sumy)/denom;
Printf(“y= %fx + %f”,a1,a0);
}
Input/Output:
Enter the n value 7
1 2
2 5
4 7
5 10
6 12
8 15
9 19
Y = 1.980769x + 0.096154
Conclusion: The program is error free
VIVA QUESATIONS
Polynomial regression
Algorithm:
Sep 1: Strart
Step 2: Read n
Step 8: Increment I by 1
Step 9: Assign
a[0][0] = n
a[0][1] = n
a[0][2] = n
a[0][3] = n
a[1][0] = n
a[1][1] = n
a[1][2] = n
a[1][3] = n
a[2][0] = n
a[2][1] = n
a[2][2] = n
a[2][3] = n
Flowchart:
233
Program:
#include<stdio.h>
#include<math.h>
main()
{
Int n, I, j, k;
Float sumx, sumxsq, sumy, sumxy, x, y;
Float sumx3, sumx4, sumxsqy, a[20][20], u=0.0, b[20];
Printf(“\n Enter the n value”);
Scanf(“%d”, &n);
Sumx = 0;
Sumxsq = 0;
Sumy = 0;
Sumxy = 0;
Sumx3 = 0;
Sumx4 = 0;
Sumxsqy = 0;
For(i=0; i<n; i++)
{
Scanf(“%f %f”, &x, &y);
Sumx +=x;
Sumxsq += pow(x,2);
Sumx3 += pow(x,3);
Sumx4 += pow(x,4);
Sumy +=y;
Sumxy += x * y;
Sumxsqy += pow(x,2) *y;
}
A[0][0] = n;
A[0][1] = sumx;
A[0][2] = sumxsq;
A[0][3] = sumy;
A[1][0] = sumx;
A[1][1] = sumxsq;
A[1][2] = sumx3;
A[1][3] = sumxy;
A[2][0] = sumxsq;
A[2][1] = sumx3;
A[2][2] = sumx4;
A[2][3] = sumxsqy;
for(i=0; i<3; i++)
{
for(j=0; j<=3; j++)
Printf(“%10.2f”,a[i][j]);
234
Printf(“\n”);
}
For(k=0; k<=2; k++)
{
For(i=0;i<=2;i++)
{
If(i!=k)
U=a[i][k]/a[k][k];
For(j = k; j<=3; j++)
A[i][j]=a[i][j] – u * a[k][j];
}
}
For(i=0;i<3;i++)
{
B[i] = a[i][3]/a[i][i];
Printf(“\nx[%d] = %f”, I, b[i]);
}
Printf(“\n”);
Printf(“y= %10.4fx +10.4 fx +%10.4f”,b[2],b[i],b[0]);
}
Input/Output:
-4 21
-3 12
-2 4
-1 1
0 2
1 7
2 15
3 30
4 45
5 67
10.00 5.00 85.00 204.00
5.00 85.00 125.00 513.00
85.00 125.00 1333.00 3193.00
X[0] = 2.030303
X[1] = 2.996970
X[2] = 1.984848
Y= 1.9848xsq + 2.9979x + 2.0303
Conclusion: The program is error free
235
VIVA QUESATIONS
Objective 45:
Program to Implement Traezodial and simpson methods.
Traezodial method:
Algorithm:
Step 1. Read x1, x2, e { x1 and x2 are the two end points of the
internal the allowed error in integral is e}
Step 2. h=x2-x1
Step 4. I = h-si
Step 7. for J= 1 to I do
Step 9. x=x+h
Endfor
Step 11. h=h/2 { Note that the internal has been halved above and
the number of points where the function has to be computed
is doubled}
Step 12.i0=i1
Flowchart:
238
Program:
#include<stdio.h>
#include<math.h>
main()
{
float h,a,b,n,x[20],y[20],sum=0,integral;
int i;
clrscr();
printf("enter the value ofa,b,n:");
scanf("%f %f %f",&a,&b,&n);
printf("enter the values of x:");
for(i=0;i<=(n-1);i++)
{
scanf("%f",&x[i]);
}
printf("\n enter the values of y:");
for(i=0;i<=(n-1);i++)
{
scanf("%f",&y[i]);
}
h=(b-a)/n;
x[0]=a;
for(i=1;i<=n-1;i++)
{
x[i]=x[i-1]+h;
sum=sum+2*y[i];
}
sum=sum+y[b];
integral=sum*(h/2);
printf("approximate integral value is: %f",integral);
getch();
}
239
Input/Output:
Simpsons Method:
Algorithm:
Step 2. h=(x2-x1)/2
Step 3. i=2
Step 5. s2=0
Step 6. s4=f(x1+h)
Step 7. I0=0
Flowchart:
242
Program:
#include<stdio.h>
#include<conio.h>
#include<math.h>
main()
{
float h,a,b,n,x[20],y[20],sum=0,itgl;
int i;
clrscr();
printf("enter the values of a,b,n");
scanf("%f%f%f",&a,&b,&n);
printf("enter the values of x");
for(i=0;i<=n;i++)
{
scanf("%f",&x[i]);
}
printf("\n enter the values of y");
for(i=0;i<=n;i++)
{
scanf("%f",&y[i]);
}
h=(b-a)/n;
a=x[0];
b=x[n];
for(i=0;i<=(n-2);i++)
{
x[i]=x[i]+h;
if(i%2==0)
{
sum=sum+4*y[i];
}
else
{
sum=sum+2*y[i];
}
}
itgl=sum*(h/3);
printf("integral value%f",itgl);
getch();
}
243
Input/Output:
VIVA QUESATIONS
work, the item in the list must be in assorted order. The approach employed in the binary
search is divid and conquer. If the list to be sorted for a specific item is not sorted, binary
search fails.
244
Objective 46:
Write a c program for heap sort
Description:
In this method, a tree structure caed heap is used. A heap is type of a
binary tree. An ordered baanced binary tree is caed a min-heap where the vaue at the roo
of any sub tree is ess than or equa to the vaue of either of its chidern. Heap sort is
basically an improvement over the binary tree sort.
Algorithm:
Heap sort
SWAP FUNCTION
1. start
2. assign *a to temp
3. assign *b to *a
4. assign temp to *b
5. stop
HEAP SORT
1. start
3. if i > 1 and a[i/2]< item repeat through step 4 other wise goto
step 5
begin
6. stop
245
Flowchart:
246
Program:
#include<stdio.h>
int a[20];
main()
{
int n,i;
clrscr();
printf("Enter number of elements: ");
scanf("%d",&n);
printf("Enter %d elements: ",n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
heapsort(n);
printf("Sorted elements are: \n");
for(i=1;i<=n;i++)
printf("%3d",a[i]);
getch();
}
heapsort(int n)
{
int t;
while(n>1)
{
maxheap(n);
t=a[1];
a[1]=a[n];
a[n]=t;
n=n-1;
}
}
maxheap(int n)
{
int i,t,j;
for(i=2;i<=n;i++)
{
t=a[i];
j=i;
while(a[j/2]<t&&j>1)
{
a[j]=a[j/2];
j=j/2;
}
a[j]=t;
}
}
247
Input/Output:
VIVA QUESATIONS
Objective 47:
Write a c program for selectioon sort
Description:
This is the simplest method of sorting. In this method, to sort the data in
ascending order, the 0th element is compared with all other eements. If the 0th element is
found to be greater than the compared element then they are interchanged.
Algorithm:
1) Start
2) Initiliaze the variables I,j,temp and arr[]
3) Read the loop and check the condition. If the condition is true
print the array elements and increment the I value. Else goto
step 4
4) Read the loop and check the condition. If the condition true
then goto next loop.
5) Read the loop and check the condition. If the condition true
then goto if condition
6) If the condition if(arr[i]>arr[j]) is true then do the following
steps
i) temp=arr[i]
ii) arr[i]=arr[j]
iii) arr[j]=temp
7) increment the j value
8) perform the loop operation for the displaying the sorted
elements.
9) print the sorted elements
10) stop
249
satrt
FLOW CHART
Initialize the
i,j,temp,arr[]
I=0 i++
I<=4
I=0 i++
I<=3
J=j+1 j++
J<=4
If
arr[i]>arr[j]
Temp=arr[i]
Arr[i]=arr[j]
Arr[j]=temp
I=0 I++
I<=4
Program:
#incude<stdio.h>
#incude<conio.h>
Void main()
Int arr[5]={25,17,31,13,2};
Int I,j,temp;
Clrscr();
Printf(“selection sort\n”);
For(i=0;i<=3;i++)
Printf(“%d\t,arr[i]”);
For(i=0;i<=3;i++)
For(j=j+1;j<=4;j++)
If(arr[i]>arr[j])
Temp=arr[i];
Arr[i]=arr[j];
Arr[j]=temp;
}
251
For(i=0;i<=4;i++)
Printf(“%d\t”,arr[i]);
Getch();
1) Section sort
25 17 31 13 2
2 13 17 25 31
2) section sort
25 31 30 12 1
1 12 25 30 31
VIVA QUESATIONS