View
332
Download
0
Category
Tags:
Preview:
DESCRIPTION
C and Data Structures Lab Solutions, JNTU Hyderabad, Amedapu Srinivas Reddy, A.S.Reddy, 9490 456 987, 08220 172 182,
Citation preview
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 1
Computer Programming Lab Solutions (as per JNTU Hyderabad Syllabus)
Prepared by: Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU
Date: January 04, 2013 Email: SrinivasReddyAmedapu@yahoo.com, Phone: 08220 172 182 (TN), 09490 456 987 (AP)
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);
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 2
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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 3
Week 2 (a) Write a C program to calculate the following Sum:
Sum=1-x2/2!+x
4/4!-x
6/6!+x
8/8!-x
10/10!
#include<stdio.h>
void main()
{
float sum,term;
int n,x,i;
printf("\nSequence is 1-x^2/2!+x^4/4-x^6/6!+x^8/8!-x^10/10! . . .");
printf("\nHow many terms you want to calculate in the sequence");
printf("\nEnter x and n values\n");
scanf("%d%d",&x,&n);
term=1.0;
for(i=1;i<=n;i++)
{
sum=sum+term;
term=-term*x*x/((i*2)*(i*2-1));
}
printf("\nSum=%8.2f",sum);
}
Sequence is 1-x^2/2!+x^4/4-x^6/6!+x^8/8!-x^10/10! . . .
How many terms you want to calculate in the sequence
Enter x and n values
3 4
Sum= -1.14
Sequence is 1-x^2/2!+x^4/4-x^6/6!+x^8/8!-x^10/10! . . .
How many terms you want to calculate in the sequence
Enter x and n values
4 7
Sum= -0.65
Week 2 (b) Write a C program to find the roots of a quadratic equation.
#include<math.h>
#include<stdio.h>
void main()
{
int a,b,c,descr;
float r1,r2;
printf("\nQuadratic equation program");
printf("\nEnter a,b and c values\n");
scanf("%d%d%d",&a,&b,&c);
descr=b*b-4*a*c;
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 4
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
1 2 1
Roots are equal
Root1=Root2=-1.00
Quadratic equation program
Enter a,b and c values
1 -1 -6
Roots are unequal
Root1= 3.00
Root2=-2.00
Quadratic equation program
Enter a,b and c values
1 2 3
Roots are imaginary
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 5
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);
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 6
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;
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 7
Enter two positive integers
24 16
GCD of 24 and 16 is 8
Enter two positive integers
35 275
GCD of 35 and 275 is 5
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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 8
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;
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 9
case '*': val=a*b;
break;
case '/': val=a/b;
break;
case '%': val=a%b;
break;
}
printf("\n %d %c %d = %d",a,op,b,val);
}
Enter two integers and operator
10 12 +
10 + 12 = 22
Enter two integers and operator
10 12 -
10 - 12 = -2
Enter two integers and operator
10 12 *
10 * 12 = 120
Enter two integers and operator
22 5 /
22 / 5 = 4
Enter two integers and operator
22 5 %
22 % 5 = 2
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];
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 10
printf("\nArray values are\n");
for(i=0;i<n;i++)
printf(" %d",x[i]);
printf("\nLargest = %d",large);
printf("\nSmallest = %d",small);
}
How many values you want to enter into an array? 7
Enter 7 integers
33 22 77 99 66 11 55
Array values are
33 22 77 99 66 11 55
Largest = 99
Smallest = 11
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);
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 11
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;
}
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 : 3 4
Enter values into 3 X 4 matrix
1 2 3 4
1 2 3 4
1 2 3 4
Enter size of matrix B: 3 4
Enter values into 3 X 4 matrix
1 1 1 1
2 2 2 2
3 3 3 3
Matrix A
Contents of matrix are
1 2 3 4
1 2 3 4
1 2 3 4
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 12
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
Enter size of matrix A : 2 3
Enter values into 2 X 3 matrix
1 2 3
4 5 6
Enter size of matrix B: 2 2
Enter values into 2 X 2 matrix
1 1
2 2
Addition of matrices is not possible
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);
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 13
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
1 2 3 4
1 1 1 1
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 14
Enter size of matrix B: 4 1
Enter values into 4 X 1 matrix
1 2 3 4
Matrix A
Contents of matrix are
1 2 3 4
1 1 1 1
Matrix B
Contents of matrix are
1
2
3
4
Matrix A x B
Contents of matrix are
29
9
Enter size of matrix A : 2 4
Enter values into 2 X 4 matrix
1 2 3 4
5 6 7 8
Enter size of matrix B: 2 3
Enter values into 2 X 3 matrix
4 4 4
7 7 7
Multiplication of matrices is not possible
Enter size of matrix A : 3 4
Enter values into 3 X 4 matrix
1 2 3 4
5 6 7 8
9 10 11 12
Enter size of matrix B: 4 5
Enter values into 4 X 5 matrix
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
Matrix A
Contents of matrix are
1 2 3 4
5 6 7 8
9 10 11 12
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 15
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];
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 16
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
Enter main string: AravindReddyJNTUH
Enter sub string: 12011U0502
Enter position: 12
Main string: AravindReddyJNTUH
Sub string: 12011U0502
Main string: AravindReddy12011U0502JNTUH
Sub string: 12011U0502
To delete n Characters from a given position in a given string.
#include<stdio.h>
void main()
{
char str[500];
int n,i,loc;
printf("\nEnter a string: ");
scanf("%s",str);
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 17
printf("\nEnter number of characters to be deleted: ");
scanf("%d",&n);
printf("\nEnter position from which deletion should be done: ");
scanf("%d",&loc);
if(loc+n>strlen(str))
{
printf("\nDeletion not possible");
printf("\nToo many characters from the given location");
exit(0);
}
i=loc;
while(str[i+n])
{
str[i]=str[i+n];
i++;
}
str[i]=str[i+n];
printf("\nString after deletion: %s",str);
}
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
Enter a string: AravindReddyNarmetta12011U0502
Enter number of characters to be deleted: 8
Enter position from which deletion should be done: 12
String after deletion: AravindReddy12011U0502
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 18
b) Write a C program to determine if the given string is a palindrome or not
#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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 19
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 doesn’t 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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 20
Week 8 (a) Write a program to generate Pascal’s triangle. #include<stdio.h>
void main()
{
int x[50][50],i,j,spaces,l,n;
printf("\nThis is a program to generate Pascal triangle");
printf("\nHow many lines you want : ");
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<=i;j++)
if(j==0||j==i)
x[i][j]=1;
else
x[i][j]=x[i-1][j-1]+x[i-1][j];
spaces=36;
for(i=0;i<n;i++)
{
printf("\n\n");
for(l=0;l<=spaces;l++)
printf(" ");
for(j=0;j<=i;j++)
printf("%4d",x[i][j]);
spaces=spaces-2;
}
}
This is a program to generate Pascal triangle
How many lines you want : 7
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 21
Week 8 (b) Write a C program to construct a pyramid of numbers.
(i)
#include<stdio.h>
void main()
{
int i,j,l,n,sp;
printf("\nHow many lines you want ? ");
scanf("%d",&n);
sp=35;
for(i=1;i<=n;i++)
{
printf("\n");
for(l=1;l<sp;l++)
printf(" ");
for(j=1;j<=i;j++)
printf("%4d",1);
sp=sp-2;
}
}
How many lines you want ? 7
1
1 1
1 1 1
1 1 1 1
1 1 1 1 1
1 1 1 1 1 1
1 1 1 1 1 1 1
(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;
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 22
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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 23
(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
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 6 7 6 5 4 3 2 1
1 2 3 4 5 6 5 4 3 2 1
1 2 3 4 5 4 3 2 1
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 24
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+x
3+………….+x
n
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);
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 25
void read(struct complex *p)
{
printf("\nEnter Complex number (real imaginary)");
scanf("%d%d",&p->real,&p->imag);
}
void display(struct complex c)
{
printf("\nComplex number is ");
printf("\n%d %di",c.real,c.imag);
}
struct complex add(struct complex x, struct complex y)
{
struct complex z;
z.real=x.real+y.real;
z.imag=x.imag+y.imag;
return z;
}
struct complex mult(struct complex x, struct complex y)
{
struct complex z;
z.real=x.real*y.real-x.imag*y.imag;
z.imag=x.imag*y.real+x.real*y.imag;
return z;
}
Enter Complex number (real imaginary)2 3
Enter Complex number (real imaginary)4 7
Enter complex numbers are
Complex number is
2 3i
Complex number is
4 7i
Addition of two complex numbers
Complex number is
6 10i
Multiplication of two complex numbers
Complex number is
-13 26i
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 26
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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 27
C:\TC\BIN>asrcpy asrcpy.c aravind.c
File Copied
C:\TC\BIN>asrcpy sss.c yyy.c
Source File Not Existing
C:\TC\BIN>asrcpy asrcpy.c yy.c zz.c
Use Command Properly
Command SourceFileName TargetFileName
C:\TC\BIN>asrcpy aravind.c jntuh.c
File Copied
C:\TC\BIN>dir jnt*.*
Volume in drive C has no label.
Volume Serial Number is 60A8-805B
Directory of C:\TC\BIN
01/05/2013 11:49 PM 485 JNTUH.C
1 File(s) 485 bytes
0 Dir(s) 36,109,844,480 bytes free
C:\TC\BIN>exit
b) Write a C program to reverse the first n characters in a file.
(Note: The file name and n are specified on the command line.)
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);
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 28
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);
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 29
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>asrmerg simple.c hworld.c aravind.c
C:\TC\BIN>type simple.c
void main()
{
printf("\nWelcome to JNTU--Aravind Reddy CSE");
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 30
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);
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 31
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;
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 32
void insertnth(nodeptr *lp,int val,int pos)
{
nodeptr p,q,r;
nodeptr getnode();
q=getnode();
q->data=val;
q->link=NULL;
if(*lp==NULL)
*lp=q;
else
{
p=*lp;
pos=pos-1;
while(p&&pos)
{
r=p;
p=p->link;
pos=pos-1;
}
q->link=r->link;
r->link=q;
}
}
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;
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 33
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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 34
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;
}
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 35
int pop(int stk[],int *tp)
{
int val=-1;
if(*tp==-1)
printf("\nStack empty, no value deleted");
else
{
val=stk[*tp];
*tp=*tp-1;
}
return val;
}
void display(int stk[],int top)
{
int i;
printf("\nContents of Stack are\n");
for(i=top;i>=0;i--)
printf("\n\t\t%4d",stk[i]);
}
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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 36
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();
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 37
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;
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 38
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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 39
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;
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 40
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;
}
}
}
int delet(int q[],int *fp,int r)
{
int val=-1;
if(*fp>r)
printf("\nQueue empty");
else
{
val=q[*fp];
*fp=*fp+1;
}
return val;
}
void insert(int q[],int *rp,int val)
{
if(*rp==MAX-1)
printf("\nQueue full");
else
{
*rp=*rp+1;
q[*rp]=val;
}
}
void display(int q[],int f,int r)
{
int i;
printf("\nContents of queue are:\n");
for(i=f;i<=r;i++)
printf(" %d",q[i]);
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 41
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;
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 42
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;
}
}
}
int delet(nodeptr *fp,nodeptr *rp)
{
int val=-1;
nodeptr p;
if(*fp==NULL)
printf("\nQueue is Empty");
else
{
p=*fp;
val=p->data;
*fp=p->link;
if(*fp==NULL)
*rp=NULL;
}
return val;
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 43
void insert(nodeptr *fp,nodeptr *rp,int val)
{
nodeptr p;
nodeptr getnode();
p=getnode();
p->data=val;
p->link=NULL;
if(*rp==NULL)
*fp=*rp=p;
else
{
(*rp)->link=p;
*rp=p;
}
}
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;
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 44
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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 45
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();
printf("\nEnter number of terms: ");
scanf("%d",&n);
read1D(arr,n);
bubble(arr,n);
print1D(arr,n);
}
void bubble(int a[],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)
{
for(j=0;j<n-i-1;j++)
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
void read1D(int arr[],int n)
{
int i;
printf("\nEnter %d values\n",n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 46
void print1D(int arr[],int n)
{
int i;
printf("\nValues of array are:\n");
for(i=0;i<n;i++)
printf(" %d",arr[i]);
}
Enter number of terms: 7
Enter 7 values
11 66 33 99 88 22 44
Values of array are:
11 22 33 44 66 88 99
Enter number terms: 12
Enter 12 values
22 88 33 77 100 222 777 123 876 456 767 121
Values of array are:
22 33 77 88 100 121 123 222 456 767 777 876
Selection sort
Week 19
Write C programs that use both recursive and non recursive functions to perform the following
searching
operations for a Key value in a given list of integers :
i) Linear search ii) Binary search
Iterative Linear Search
#include<stdio.h>
void main()
{
int arr[100],n,val,loc;
void read1D();
int lsearch();
printf("\nHowmany elements you want to enter? ");
scanf("%d",&n);
read1D(arr,n);
printf("\nEnter element to be searched: ");
scanf("%d",&val);
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 47
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:
1 2 3 4 5
Enter element to be searched: 3
3 availabel at 2 location
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 48
Iterative Binary Search
#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]);
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 49
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
Recursive Binary Search
#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 a[],int low,int high,int key)
{
int mid;
if(low<=high)
{
mid=(low+high)/2;
if(a[mid]==key)
return mid;
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 50
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]);
}
Howmany elements you want to enter? 5
Enter 5 values:
11 22 33 44 55
Enter element to be searched: 22
22 availabel at 1 location
Howmany elements you want to enter? 7
Enter 7 values:
12 23 34 45 56 67 78
Enter element to be searched: 66
66 availabel at -1 location
Howmany elements you want to enter? 10
Enter 10 values:
10 20 30 40 50 60 70 80 90 100
Enter element to be searched: 80
80 availabel at 7 location
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);
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 51
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;
}
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]);
}
void quicksort(int a[],int lower,int upper)
{
int i ;
if(upper>lower)
{
i=split(a,lower,upper);
quicksort(a,lower,i-1);
quicksort(a,i+1,upper);
}
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 52
int split(int x[10],int lower,int upper)
{
int pivot,j,temp,i;
pivot=lower;
i=lower;
j=upper;
while(i<j)
{
while(x[i]<=x[pivot]&&i<upper)
i++;
while(x[j]>x[pivot])
j--;
if(i<j)
{
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
}
temp=x[pivot];
x[pivot]=x[j];
x[j]=temp;
return j;
}
INPUT/OUTPUT
Enter the total number of elements: 7
Enter the elements which to be sort:
1 9 4 6 3 2 8
After merge sorting elements are:
1 2 3 4 6 8 9
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
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 53
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]);
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 54
void partition(int arr[],int low,int high)
{
int mid;
if(low<high)
{
mid=(low+high)/2;
partition(arr,low,mid);
partition(arr,mid+1,high);
mergeSort(arr,low,mid,high);
}
}
void mergeSort(int arr[],int low,int mid,int high)
{
int i,m,k,l,temp[MAX];
l=low;
i=low;
m=mid+1;
while((l<=mid)&&(m<=high))
{
if(arr[l]<=arr[m])
{
temp[i]=arr[l];
l++;
}
else
{
temp[i]=arr[m];
m++;
}
i++;
}
if(l>mid)
{
for(k=m;k<=high;k++)
{
temp[i]=arr[k];
i++;
}
}
SrinivasReddyAmedapu@yahoo.com
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 55
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:
1 9 2 7 4 6 5
After merge sorting elements are:
1 2 4 5 6 7 9
Recommended