Computer Lab Programs
Computer Lab Programs
com
Week I (a) Write a program to find the sum of individual digits of a positive integer.
#include<stdio.h>
void main()
{
int num,d,sum,temp;
printf("\nEnter a positive integer : ");
scanf("%d",&num);
temp=num;
sum=0;
while(num)
{
d=num%10;
sum=sum+d;
num/=10;
}
printf("\nSum of digits of %d is %d",temp,sum);
}
Enter a positive integer : 1234
Sum of digits of 1234 is 10
Week I (b) A Fibonacci Sequence is defined as follows: the first and second terms in the sequence are
0 and 1. Subsequent terms are found by adding the preceding two terms in the sequence. Write a C
program to generate the first n terms of the sequence.
#include<stdio.h>
void main()
{
int f1,f2,f3,n,i;
printf("\nHow many Fibonacci Sequence numbers you want? ");
scanf("%d",&n);
f1=0, f2=1;
printf("\nThe follwing are %d Fibonacci Numbers\n",n);
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
for(i=1;i<=n;i++)
{
printf(" %d",f1);
f3=f1+f2;
f1=f2;
f2=f3;
}
}
How many Fibonacci Sequence numbers you want? 11
The follwing are 11 Fibonacci Numbers
0 1 1 2 3 5 8 13 21 34 55
Week I (c) Write a C program to generate all the prime numbers between 1 and n, where n is a value
supplied by the user.
#include<stdio.h>
void main()
{
int i,n,num,j;
printf("\nEnter upper limit for prime numbers : ");
scanf("%d",&n);
printf("\nPrime numbers between 1 and %d are\n1",n);
for(i=1;i<=n;i++)
{
num=i;
for(j=2;j<num;j++)
if(num%j==0)
break;
if(j==num)
printf(" %d",num);
}
}
Enter upper limit for prime numbers : 55
Prime numbers between 1 and 55 are
1 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
if(descr==0)
{
printf("\nRoots are equal");
r1=r2=-b/(2.0*a);
printf("\nRoot1=Root2=%5.2f",r1);
}
else
{
if(descr>0)
{
printf("\nRoots are unequal");
r1=(-b+sqrt(descr))/(2.0*a);
r2=(-b-sqrt(descr))/(2.0*a);
printf("\nRoot1=%5.2f",r1);
printf("\nRoot2=%5.2f",r2);
}
else
printf("\nRoots are imaginary");
}
}
Quadratic equation program
Enter a,b and c values
121
Roots are equal
Root1=Root2=-1.00
Week 3 (a) Write C programs that use both recursive and non-recursive functions
(i)
To find the factorial of a given integer.
Non-Recursive
#include<stdio.h>
void main()
{
int num,fact;
int factorial();
printf("\nEnter a positive integer: ");
scanf("%d",&num);
fact=factorial(num);
printf("\nFactorial of %d is %d",num,fact);
}
int factorial(int n)
{
int i,f;
f=1;
for(i=1;i<=n;i++)
f=f*i;
return f;
}
Enter a positive integer: 5
Factorial of 5 is 120
Enter a positive integer: 7
Factorial of 7 is 5040
Enter a positive integer: 6
Factorial of 6 is 720
Recursive
#include<stdio.h>
void main()
{
int num,fact;
int factorial();
printf("\nEnter a positive integer: ");
scanf("%d",&num);
fact=factorial(num);
printf("\nFactorial of %d is %d",num,fact);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
int factorial(int n)
{
int f;
if(n<=1)
return 1;
else
f=n*factorial(n-1);
return f;
}
Enter a positive integer: 7
Factorial of 7 is 5040
Enter a positive integer: 5
Factorial of 5 is 120
Enter a positive integer: 6
Factorial of 6 is 720
Week 3 (a) Write C programs that use both recursive and non-recursive functions
(ii)
To find the GCD (greatest common divisor) of two given integers.
Non-Recursive
#include<stdio.h>
void main()
{
int a,b,val;
int GCD();
printf("\nEnter two positive integers\n");
scanf("%d%d",&a,&b);
val=GCD(a,b);
printf("\nGCD of %d and %d is %d",a,b,val);
}
int GCD(int x,int y)
{
int temp;
while(x%y!=0)
{
temp=x%y;
x=y;
y=temp;
}
return y;
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
Non-Recursive Solution 2
#include<stdio.h>
void main()
{
int a,b,val;
int GCD();
printf("\nEnter two positive integers\n");
scanf("%d%d",&a,&b);
val=GCD(a,b);
printf("\nGCD of %d and %d is %d",a,b,val);
}
int GCD(int x,int y)
{
int i,temp;
if(x>y)
{
temp=x;
x=y;
y=temp;
}
for(i=y;i>=1;i--)
if(x%i==0&&y%i==0)
break;
return i;
}
Enter two positive integers
24 16
GCD of 24 and 16 is 8
Enter two positive integers
78 24
GCD of 78 and 24 is 6
Recursive
#include<stdio.h>
void main()
{
int a,b,val,temp;
int GCD();
printf("\nEnter two positive integers\n");
scanf("%d%d",&a,&b);
val=GCD(a,b);
printf("\nGCD of %d and %d is %d",a,b,val);
}
int GCD(int x,int y)
{
int g,temp;
if(x%y!=0)
GCD(y,x%y);
else
return y;
}
Enter two positive integers
78 25
GCD of 78 and 25 is 1
Enter two positive integers
78 24
GCD of 78 and 24 is 6
Week 4 (b) Write a C program, which takes two integer operands and one operator from the user,
performs the operation and then prints the result. (Consider the operators +, -, *, /, % and use
Switch Statement)
#include<stdio.h>
void main()
{
int a,b,val;
char op;
printf("\nEnter two integers and operator\n");
scanf("%d%d %c",&a,&b,&op);
switch(op)
{
case '+': val=a+b;
break;
case '-': val=a-b;
break;
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
Week 5 (a) Write a C program to find both the largest and smallest number in a list of integers.
#include<stdio.h>
void main()
{
int x[100],n,i,large,small;
printf("\nHow many values you want to enter into an array? ");
scanf("%d",&n);
printf("\nEnter %d integers\n",n);
for(i=0;i<n;i++)
scanf("%d",&x[i]);
large=x[0];
small=x[0];
for(i=1;i<n;i++)
{
if(large<x[i])
large=x[i];
if(small>x[i])
small=x[i];
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
Week 5 (b) Write a C program that uses functions to perform the following:
i)
Addition of Two Matrices
#include<stdio.h>
void main()
{
int a[20][20],b[20][20],c[20][20];
int m1,m2,m3,n1,n2,n3;
void read2D(),print2D(),add();
printf("\nEnter size of matrix A : ");
scanf("%d%d",&m1,&n1);
read2D(a,m1,n1);
printf("\nEnter size of matrix B: ");
scanf("%d%d",&m2,&n2);
read2D(b,m2,n2);
add(a,m1,n1,b,m2,n2,c,&m3,&n3);
printf("\nMatrix A\n");
print2D(a,m1,n1);
printf("\nMatrix B\n");
print2D(b,m2,n2);
printf("\nMatrix C\n");
print2D(c,m3,n3);
}
void add(int a[20][20],int m1,int n1, int b[20][20],int m2,int n2,int c[20][20],int *mp,int *np)
{
int i,j;
if(m1!=m2||n1!=n2)
{
printf("\nAddition of matrices is not possible");
exit(0);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
10
for(i=0;i<m1;i++)
for(j=0;j<n1;j++)
c[i][j]=a[i][j]+b[i][j];
*mp=m1;
*np=n1;
}
11
Matrix B
Contents of matrix are
1 1 1 1
2 2 2 2
3 3 3 3
Matrix C
Contents of matrix are
2 3 4 5
3 4 5 6
4 5 6 7
Week 5 (b) Write a C program that uses functions to perform the following:
ii)
Multiplication of Two Matrices
#include<stdio.h>
void main()
{
int a[20][20],b[20][20],c[20][20];
int m1,m2,m3,n1,n2,n3;
void read2D(),print2D(),multiply();
printf("\nEnter size of matrix A : ");
scanf("%d%d",&m1,&n1);
read2D(a,m1,n1);
printf("\nEnter size of matrix B: ");
scanf("%d%d",&m2,&n2);
read2D(b,m2,n2);
multiply(a,m1,n1,b,m2,n2,c,&m3,&n3);
printf("\nMatrix A\n");
print2D(a,m1,n1);
printf("\nMatrix B\n");
print2D(b,m2,n2);
printf("\nMatrix A x B\n");
print2D(c,m3,n3);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
12
void multiply(int a[20][20],int m1,int n1, int b[20][20],int m2,int n2,int c[20][20],int *mp,int *np)
{
int i,j,k;
if(n1!=m2)
{
printf("\nMultiplication of matrices is not possible");
exit(0);
}
for(i=0;i<m1;i++)
{
for(j=0;j<n2;j++)
{
c[i][j]=0;
for(k=1;k<n1;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
}
*mp=m1;
*np=n2;
}
void print2D(int x[20][20],int m,int n)
{
int i,j;
printf("\nContents of matrix are\n");
for(i=0;i<m;i++)
{
printf("\n");
for(j=0;j<n;j++)
printf("%5d",x[i][j]);
}
}
void read2D(int x[20][20],int m,int n)
{
int i,j;
printf("\nEnter values into %d X %d matrix\n",m,n);
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&x[i][j]);
}
Enter size of matrix A : 2 4
Enter values into 2 X 4 matrix
1234
1111
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
13
14
Matrix B
Contents of matrix are
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
Matrix A x B
Contents of matrix are
29 29 29 29 29
65 65 65 65 65
101 101 101 101 101
Week 6
a) Write a C program that uses functions to perform the following operations:
i) To insert a sub-string in to a given main string from a given position.
ii) To delete n Characters from a given position in a given string.
b) Write a C program to determine if the given string is a palindrome or not
To insert a sub-string in to a given main string from a given position.
#include<stdio.h>
void main()
{
char str[500],sub[100];
int n1,n2,i,j,loc;
printf("\nEnter main string: ");
scanf("%s",str);
printf("\nEnter sub string: ");
scanf("%s",sub);
printf("\nEnter position: ");
scanf("%d",&loc);
printf("\nMain string: %s",str);
printf("\nSub string: %s",sub);
n1=strlen(str);
n2=strlen(sub);
if(loc>n1)
{
printf("\nPosition is out of range");
exit(0);
}
for(i=n1;i>=loc;i--)
str[i+n2]=str[i];
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
15
j=0;
while(sub[j])
{
str[loc+j]=sub[j];
j++;
}
printf("\nMain string: %s",str);
printf("\nSub string: %s",sub);
}
INPUT/OUTPUT
Enter main string: JntuHyderabad
Enter sub string: ASReddy
Enter position: 4
Main string: JntuHyderabad
Sub string: ASReddy
Main string: JntuASReddyHyderabad
Sub string: ASReddy
#include<stdio.h>
void main()
{
char str[500];
int n,i,loc;
printf("\nEnter a string: ");
scanf("%s",str);
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
16
INPUT/OUTPUT
Enter a string: AravindReddyJNTU
Enter number of characters to be deleted: 5
Enter position from which deletion should be done: 7
String after deletion: AravindJNTU
17
#include<stdio.h>
#include<string.h>
void main()
{
char str[500];
int n,i;
printf("\nEnter a string: ");
scanf("%s",str);
n=strlen(str);
for(i=0;i<n/2;i++)
if(str[i]!=str[n-i-1])
break;
if(i==n/2)
printf("\n%s is palindrome",str);
else
printf("\n%s is not palindrome",str);
}
Enter a string: madam
madam is palindrome
Enter a string: aravind
aravind is not palindrome
Enter a string: aravindnivara
aravindnivara is palindrome
Enter a string: jntutnj
jntutnj is palindrome
Enter a string: JNTUH
JNTUH is not palindrome
18
Week 7
a) Write a C program that displays the position or index in the string S where the string T begins, or
1 if S doesnt contain T.
b) Write a C program to count the lines, words and characters in a given text.
#include<stdio.h>
void main()
{
char str[500],sub[100];
int n1,n2,i,j,loc;
printf("\nEnter main string: ");
scanf("%s",str);
printf("\nEnter sub string: ");
scanf("%s",sub);
i=0;
while(str[i])
{
j=0;
while(str[i+j]&&sub[j]&&str[i+j]==sub[j])
j++;
if(sub[j]==NULL)
break;
i=i+1;
}
if(sub[j]==NULL)
printf("\nSub string available at %d location",i+1);
else
printf("\nSub String not available : %d",-1);
}
INPUT/OUTPUT
Enter main string: AravindReddy
Enter sub string: Reddy
Sub string available at 8 location
Enter main string: AravindJNTUcse
Enter sub string: JNTU
Sub string available at 8 location
Enter main string: SrinivasReddy
Enter sub string: vas
Sub string available at 6 location
Enter main string: FirstYear
Enter sub string: irt
Sub String not available : -1
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
19
1
1
1
1
1
1
6
10
15
4
5
10
20
5
15
1
6
20
(ii)
#include<stdio.h>
void main()
{
int i,j,k,l,n,spaces;
clrscr();
printf("\nThis is a dymand pattern program");
printf("\nEnter n value ");
scanf("%d",&n);
spaces=36;
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
21
for(i=1;i<=n;i++)
{
printf("\n");
for(l=1;l<=spaces;l++)
printf(" ");
for(j=1;j<=i;j++)
printf("%4d",i);
spaces-=2;
}
spaces=spaces+4;
for(i=n-1;i>=1;i--)
{
printf("\n");
for(l=1;l<=spaces;l++)
printf(" ");
for(j=1;j<=i;j++)
printf("%4d",i);
spaces+=2;
}
}
This is a dymand pattern program
Enter n value 7
1
2 2
3 3 3
4 4 4 4
5 5 5 5 5
6 6 6 6 6 6
7 7 7 7 7 7 7
6 6 6 6 6 6
5 5 5 5 5
4 4 4 4
3 3 3
2 2
1
22
(iii)
#include<stdio.h>
void main()
{
int i,j,k,l,n,spaces;
printf("\nThis is a dymand pattern program");
printf("\nEnter n value ");
scanf("%d",&n);
spaces=36;
for(i=1;i<=n;i++)
{
printf("\n");
for(l=1;l<=spaces;l++)
printf(" ");
for(j=1;j<=i;j++)
printf("%4d",j);
for(j=i-1;j>=1;j--)
printf("%4d",j);
spaces-=4;
}
spaces=spaces+8;
for(i=n-1;i>=1;i--)
{
printf("\n");
for(l=1;l<=spaces;l++)
printf(" ");
for(j=1;j<=i;j++)
printf("%4d",j);
for(j=i-1;j>=1;j--)
printf("%4d",j);
spaces+=4;
}
}
This is a dymand pattern program
Enter n value 7
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1
1 2 3 4 5 4 3 2
1 2 3 4 5 6 5 4 3
1 2 3 4 5 6 7 6 5 4
1 2 3 4 5 6 5 4 3
1 2 3 4 5 4 3 2
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1
1
2 1
3 2 1
2 1
1
23
Week 9
Write a C program to read in two numbers, x and n, and then compute the sum of this geometric
progression:
1+x+x2+x3+.+xn
For example: if n is 3 and x is 5, then the program computes 1+5+25+125.
Print x, n, the sum
Perform error checking. For example, the formula does not make sense for negative exponents if n is less
than 0. Have your program print an error message if n<0, then go back and read in the next pair of numbers
of without computing the sum. Are any values of x also illegal? If so, test for them too.
Week 11
Write a C program that uses functions to perform the following operations:
i) Reading a complex number
ii) Writing a complex number
iii) Addition of two complex numbers
iv) Multiplication of two complex numbers
(Note: represent complex number using a structure.)
#include<stdio.h>
struct complex
{
int real;
int imag;
};
void main()
{
struct complex c1,c2,c3,c4;
void read(),display();
struct complex add(),mult();
read(&c1);
read(&c2);
printf("\nEntered complex numbers are\n");
display(c1);
display(c2);
c3=add(c1,c2);
c4=mult(c1,c2);
printf("\nAddition of two complex numbers\n");
display(c3);
printf("\nMultiplication of two complex numbers\n");
display(c4);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
24
25
Week 12
a) Write a C program which copies one file to another.
#include<stdio.h>
void main(int argc,char* argv[])
{
FILE *fp1,*fp2;
char ch;
if(argc!=3)
{
printf("\nUse Command Properly");
printf("\nCommand SourceFileName TargetFileName");
exit(0);
}
fp1=fopen(argv[1],"r");
if(fp1==NULL)
{
printf("\nSource File Not Existing");
exit(1);
}
fp2=fopen(argv[2],"w");
ch=fgetc(fp1);
while(ch!=EOF)
{
fputc(ch,fp2);
ch=fgetc(fp1);
}
printf("\nFile Copied");
fclose(fp1);
fclose(fp2);
}
C:\TC\BIN>dir asrc*.*
Volume in drive C has no label.
Volume Serial Number is 60A8-805B
Directory of C:\TC\BIN
01/05/2013 11:46 PM
485 ASRCPY.BAK
01/05/2013 11:46 PM
485 ASRCPY.C
01/05/2013 11:46 PM
12,280 ASRCPY.EXE
5 File(s)
15,883 bytes
0 Dir(s) 36,109,975,552 bytes free
26
Week 13
a) Write a C programme to display the contents of a file.
#include<stdio.h>
void main(int argc,char* argv[])
{
FILE *fp;
char ch;
if(argc!=2)
{
printf("\nUse Command Properly");
printf("\nCommand FileName");
exit(0);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
27
fp=fopen(argv[1],"r");
if(fp==NULL)
{
printf("\nSource File Not Existing");
exit(1);
}
ch=fgetc(fp);
while(ch!=EOF)
{
printf("%c",ch);
ch=fgetc(fp);
}
fclose(fp);
}
C:\TC\BIN>asrtype yy.c
Source File Not Existing
C:\TC\BIN>asrtype simple.c
void main()
{
printf("\nWelcome to JNTU--Aravind Reddy CSE");
}
C:\TC\BIN>asrtype simple.c asrtype.c
Use Command Properly
Command FileName
C:\TC\BIN>exit
b) Write a C programme to merge two files into a third file ( i.e., the contents of the first file followed
by those of the second are put in the third file)
#include<stdio.h>
void main(int argc,char* argv[])
{
FILE *fp1,*fp2,*fp3;
char ch;
if(argc!=4)
{
printf("\nUse Command Properly");
printf("\nCommand SourceFileName1 SourceFileName2 TargetFileName");
exit(0);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
28
fp1=fopen(argv[1],"r");
if(fp1==NULL)
{
printf("\nSource File1 Not Existing");
exit(1);
}
fp3=fopen(argv[3],"w");
ch=fgetc(fp1);
while(ch!=EOF)
{
fputc(ch,fp3);
ch=fgetc(fp1);
}
fclose(fp1);
fp2=fopen(argv[2],"r");
if(fp2==NULL)
{
printf("\nSource File 2 Not Existing");
fclose(fp3);
exit(2);
}
ch=fgetc(fp2);
while(ch!=EOF)
{
fputc(ch,fp3);
ch=fgetc(fp2);
}
fclose(fp2);
fclose(fp3);
}
INPUT/OUTPUT
C:\TC\BIN>type simple.c
void main()
{
printf("\nWelcome to JNTU--Aravind Reddy CSE");
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
29
C:\TC\BIN>type hworld.c
#include<stdio.h>
void main()
{
printf("\nHello World!");
printf("\nThis is Aravind Reddy");
printf("\nRoll No. 12011U0502, CSE");
}
C:\TC\BIN>type aravind.c
void main()
{
printf("\nWelcome to JNTU--Aravind Reddy CSE");
}
#include<stdio.h>
void main()
{
printf("\nHello World!");
printf("\nThis is Aravind Reddy");
printf("\nRoll No. 12011U0502, CSE");
}
C:\TC\BIN>exit
Week 14
Write a C program that uses functions to perform the following operations on singly linked list.:
i) Creation ii) Insertion iii) Deletion iv) Traversal
#include<stdio.h>
#include<alloc.h>
struct node
{
int data;
struct node *link;
};
typedef struct node* nodeptr;
void main()
{
int val,pos;
nodeptr list;
nodeptr create();
void print(),insertnth(nodeptr*,int,int);
int deletenth(nodeptr*,int);
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
30
list=create();
print(list);
printf("\nEnter Element to be inserted and position : ");
scanf("%d%d",&val,&pos);
insertnth(&list,val,pos);
print(list);
printf("\nWhich position node you want to delete? ");
scanf("%d",&pos);
val=deletenth(&list,pos);
printf("\nDeleted node value is %d",val);
print(list);
}
int deletenth(nodeptr *lp,int pos)
{
int val=-1;
nodeptr p,q,r;
if(*lp==NULL)
printf("\nLinked List is empty, delete not possible");
else
{
p=*lp;
if(pos==1)
{
*lp=p->link;
val=p->data;
free(p);
}
else
{
pos=pos-2;
while(p&&pos)
{
p=p->link;
pos=pos-1;
}
if(p)
{
q=p->link;
p->link=q->link;
val=q->data;
free(q);
}
else
printf("\nLess nodes than given node number");
}
}
return val;
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
31
nodeptr create()
{
int val;
nodeptr p,q,r;
nodeptr getnode();
printf("\nEnter 0 (zero) to stop\n");
scanf("%d",&val);
p=getnode();
r=p;
while(val)
{
q=getnode();
q->data=val;
p->link=q;
p=q;
scanf("%d",&val);
}
p->link=NULL;
p=r->link;
free(r);
return p;
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
32
void print(nodeptr p)
{
printf("\nContents of Linked List are\n");
while(p)
{
printf(" %d",p->data);
p=p->link;
}
}
nodeptr getnode()
{
nodeptr p;
p=(nodeptr)malloc(sizeof(struct node));
return p;
}
INPUT/OUTPUT
Enter 0 (zero) to stop
11 22 33 44 55 66 77 88 99 0
Contents of Linked List are
11 22 33 44 55 66 77 88 99
Enter Element to be inserted and position : 678 6
Contents of Linked List are
11 22 33 44 55 678 66 77 88 99
Which position node you want to delete? 3
Deleted node value is 33
Contents of Linked List are
11 22 44 55 678 66 77 88 99
33
Week 15
Write C programs that implement stack (its operations) using
i) Arrays ii) Pointers
Arrays
#include<stdio.h>
#define MAX 100
void main()
{
int stack[MAX],top=-1,val,op;
void push(),display(),options();
int pop();
clrscr();
options();
while(1)
{
printf("\nSelect option : ");
scanf("%d",&op);
switch(op)
{
case 1: printf("\nEnter value to be pushed : ");
scanf("%d",&val);
push(stack,&top,val);
break;
case 2: val=pop(stack,&top);
printf("\nValue poped is %d",val);
break;
case 3: display(stack,top);
break;
case 4: exit(0);
break; //optional ie, non reachable code
default:options();
break; //optional, last case
}
}
}
void push(int stk[],int *tp,int val)
{
if(*tp==MAX-1)
printf("\nStack full, %d not inserted",val);
else
{
*tp=*tp+1;
stk[*tp]=val;
}
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
34
void options()
{
printf("\nAvailable optons are\n");
printf("\n\t\t0. Options");
printf("\n\t\t1. Push");
printf("\n\t\t2. Pop");
printf("\n\t\t3. Display");
printf("\n\t\t4. Exit");
}
INPUT/OUTPUT
Available optons are
0. Options
1. Push
2. Pop
3. Display
4. Exit
Select option : 1
Enter value to be pushed : 11
Select option : 1
Enter value to be pushed : 99
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
35
Select option : 1
Enter value to be pushed : 88
Select option : 3
Contents of Stack are
88
99
11
Select option : 2
Value poped is 88
Select option : 2
Value poped is 99
Select option : 2
Value poped is 11
Select option : 2
Stack empty, no value deleted
Value poped is -1
Select option : 4
Pointers
#include<stdio.h>
struct node
{
int data;
struct node *link;
};
typedef struct node* nodeptr;
void main()
{
int op,val;
nodeptr sp=NULL;
void push(),display(),options();
int pop();
clrscr();
options();
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
36
while(1)
{
printf("\nSelect option : ");
scanf("%d",&op);
switch(op)
{
case 1: printf("\nEnter value to be pushed : ");
scanf("%d",&val);
push(&sp,val);
break;
case 2: val=pop(&sp);
printf("\nValue poped is %d",val);
break;
case 3: display(sp);
break;
case 4: exit(0);
break; //optional ie, non reachable code
default:options();
break; //optional, last case
}
}
}
void push(nodeptr *spp,int val)
{
nodeptr p;
nodeptr getnode();
p=getnode();
p->data=val;
p->link=*spp;
*spp=p;
}
int pop(nodeptr *spp)
{
int val=-1;
nodeptr p;
if(*spp==NULL)
printf("\nStack Empty");
else
{
p=*spp;
*spp=p->link;
val=p->data;
free(p);
}
return val;
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
37
void display(nodeptr p)
{
printf("\nContents of Stack are\n");
while(p)
{
printf("\n\t%4d",p->data);
p=p->link;
}
}
void options()
{
printf("\nAvailable optons are\n");
printf("\n\t0. Options");
printf("\n\t1. Push");
printf("\n\t2. Pop");
printf("\n\t3. Display");
printf("\n\t4. Exit");
}
nodeptr getnode()
{
nodeptr p;
p=(nodeptr)malloc(sizeof(struct node));
return p;
}
INPUT/OUTPUT
Available optons are
0. Options
1. Push
2. Pop
3. Display
4. Exit
Select option : 1
Enter value to be pushed : 11
Select option : 1
Enter value to be pushed : 22
Select option : 1
Enter value to be pushed : 44
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
38
Select option : 2
Value poped is 44
Select option : 3
Contents of Stack are
22
11
Select option : 2
Value poped is 22
Select option : 2
Value poped is 11
Select option : 2
Stack Empty
Value poped is -1
Select option : 4
Week 16
Write C programs that implement Queue (its operations) using
i) Arrays ii) Pointers
Arrays
#include<stdio.h>
#define MAX 100
void main()
{
int val,op;
int queue[MAX],front=0,rear=-1;
int delet();
void insert(),display(),options();
options();
while(1)
{
printf("\nSelect option: ");
scanf("%d",&op);
switch(op)
{
case 1: printf("\nEnter value to be inserted: ");
scanf("%d",&val);
insert(queue,&rear,val);
break;
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
39
case 2: val=delet(queue,&front,rear);
printf("\nDeleted value is %d",val);
break;
case 3: display(queue,front,rear);
break;
case 4: exit(0);
break;
default: options();
break;
}
}
}
40
void options()
{
printf("\nAvailable operations");
printf("\n\t1. Insert");
printf("\n\t2. Delete");
printf("\n\t3. Display");
printf("\n\t4. Exit");
}
Available operations
1. Insert
2. Delete
3. Display
4. Exit
Select option: 1
Enter value to be inserted: 11
Select option: 1
Enter value to be inserted: 66
Select option: 1
Enter value to be inserted: 88
Select option: 3
Contents of queue are:
11 66 88
Select option: 2
Deleted value is 11
Select option: 4
Pointers
#include<stdio.h>
#define MAX 100
struct node
{
int data;
struct node *link;
};
typedef struct node* nodeptr;
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
41
void main()
{
int val,op;
nodeptr front=NULL,rear=NULL;
int delet();
void insert(),display(),options();
options();
while(1)
{
printf("\nSelect option: ");
scanf("%d",&op);
switch(op)
{
case 1: printf("\nEnter value to be inserted: ");
scanf("%d",&val);
insert(&front,&rear,val);
break;
case 2: val=delet(&front,&rear);
printf("\nDeleted value is %d",val);
break;
case 3: display(front);
break;
case 4: exit(0);
break;
default: options();
break;
}
}
}
42
void display(nodeptr p)
{
printf("\nContents of queue are:\n");
while(p)
{
printf(" %d",p->data);
p=p->link;
}
}
void options()
{
printf("\nAvailable operations");
printf("\n\t1. Insert");
printf("\n\t2. Delete");
printf("\n\t3. Display");
printf("\n\t4. Exit");
}
nodeptr getnode()
{
nodeptr p;
p=(nodeptr)malloc(sizeof(struct node));
return p;
}
43
Available operations
1. Insert
2. Delete
3. Display
4. Exit
Select option: 1
Enter value to be inserted: 11
Select option: 1
Enter value to be inserted: 12
Select option: 1
Enter value to be inserted: 14
Select option: 2
Deleted value is 11
Select option: 3
Contents of queue are:
12 14
Select option: 2
Deleted value is 12
Select option: 2
Deleted value is 14
Select option: 2
Queue is Empty
Deleted value is -1
Select option: 3
Contents of queue are:
Select option: 4
44
Week 18
Write a C program that implements the following sorting methods to sort a given list of integers in
ascending
order
i) Bubble sort
ii) Selection sort
Bubble Sort
#include<stdio.h>
#define MAX 100
void main()
{
int arr[MAX],n,temp,i,j;
void read1D(),print1D(),bubble();
45
46
loc=lsearch(arr,n,val);
printf("\n%d availabel at %d location",val,loc);
}
int lsearch(int arr[],int n,int val)
{
int i;
for(i=0;i<n;i++)
if(arr[i]==val)
return i;
return -1;
}
void read1D(int arr[],int n)
{
int i;
printf("\nEnter %d values:\n",n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
}
INPUT/OUTPUT
Howmany elements you want to enter? 1
Enter 1 values:
1
Enter element to be searched: 1
1 availabel at 0 location
Howmany elements you want to enter? 8
Enter 8 values:
11 55 33 77 89 98 22 66
Enter element to be searched: 89
89 availabel at 4 location
Howmany elements you want to enter? 12
Enter 12 values:
12 56 89 65 32 11 66 44 99 92 23 48
Enter element to be searched: 10
10 availabel at -1 location
Howmany elements you want to enter? 5
Enter 5 values:
12345
Enter element to be searched: 3
3 availabel at 2 location
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
47
#include<stdio.h>
void main()
{
int arr[100],n,val,loc;
void read1D();
int bsearch();
printf("\nHowmany elements you want to enter? ");
scanf("%d",&n);
read1D(arr,n);
printf("\nEnter element to be searched: ");
scanf("%d",&val);
loc=bsearch(arr,0,n-1,val);
printf("\n%d availabel at %d location",val,loc);
}
int bsearch(int arr[],int lb,int ub,int val)
{
int mid;
while(lb<=ub)
{
mid=(lb+ub)/2;
if(arr[mid]==val)
return mid;
else
if(arr[mid]<val)
lb=mid+1;
else
ub=mid-1;
}
return -1;
}
void read1D(int arr[],int n)
{
int i;
printf("\nEnter %d values:\n",n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
}
48
INPUT/OUTPUT
Howmany elements you want to enter? 7
Enter 7 values:
11 33 45 67 88 90 112
Enter element to be searched: 88
88 availabel at 4 location
Howmany elements you want to enter? 5
Enter 5 values:
1 4 7 9 15
Enter element to be searched: 6
6 availabel at -1 location
Howmany elements you want to enter? 10
Enter 10 values:
11 14 17 25 28 45 47 56 67 78
Enter element to be searched: 56
56 availabel at 7 location
49
else if(key<a[mid])
return bsearch(a,low,mid-1,key);
else if(key>a[mid])
return bsearch(a,mid+1,high,key);
}
else
return -1;
}
void read1D(int arr[],int n)
{
int i;
printf("\nEnter %d values:\n",n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
}
Week 20
Write C program that implement the Quick sort method to sort a given list of integers in ascending
order:
#include<stdio.h>
#define MAX 100
int split(int*,int,int);
void getdata(int arr[],int n);
void display(int arr[],int n);
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
50
int main()
{
int arr[MAX],i,n;
void quicksort(int*,int,int);
printf("\nEnter the total number of elements: ");
scanf("%d",&n);
getdata(arr,n);
quicksort(arr,0,n-1);
display(arr,n);
return 0;
}
51
INPUT/OUTPUT
Enter the total number of elements: 7
Enter the elements which to be sort:
1946328
After merge sorting elements are:
1234689
Enter the total number of elements: 15
Enter the elements which to be sort:
11 99 44 66 22 88 12 98 45 23 67 21 58 29 83
After merge sorting elements are:
11 12 21 22 23 29 44 45 58 66 67 83 88 98 99
52
Week 21
Write C program that implement the Merge sort method to sort a given list of integers in ascending
order:
#include<stdio.h>
#define MAX 50
void mergeSort(int arr[],int low,int mid,int high);
void partition(int arr[],int low,int high);
void getdata(int arr[],int n);
void display(int arr[],int n);
int main()
{
int arr[MAX],i,n;
printf("\nEnter the total number of elements: ");
scanf("%d",&n);
getdata(arr,n);
partition(arr,0,n-1);
display(arr,n);
return 0;
}
void getdata(int arr[],int n)
{
int i;
printf("\nEnter the elements which to be sort:\n");
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
}
void display(int arr[],int n)
{
int i;
printf("\nAfter merge sorting elements are:\n");
for(i=0;i<n;i++)
printf("%d ",arr[i]);
}
53
54
else
{
for(k=l;k<=mid;k++)
{
temp[i]=arr[k];
i++;
}
}
for(k=low;k<=high;k++)
arr[k]=temp[k];
}
INPUT/OUTPUT
Enter the total number of elements: 7
Enter the elements which to be sort:
33 22 77 55 44 11 88
After merge sorting elements are:
11 22 33 44 55 77 88
Enter the total number of elements: 12
Enter the elements which to be sort:
1 3 5 7 4 2 9 8 6 11 22 15
After merge sorting elements are:
1 2 3 4 5 6 7 8 9 11 15 22
Enter the total number of elements: 7
Enter the elements which to be sort:
1927465
After merge sorting elements are:
1245679
55