Sei sulla pagina 1di 55

SrinivasReddyAmedapu@yahoo.

com

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);
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

SrinivasReddyAmedapu@yahoo.com

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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

SrinivasReddyAmedapu@yahoo.com

Week 2 (a) Write a C program to calculate the following Sum:


Sum=1-x2/2!+x4/4!-x6/6!+x8/8!-x10/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
34
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
47
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;
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

SrinivasReddyAmedapu@yahoo.com

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

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
123
Roots are imaginary

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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];
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

SrinivasReddyAmedapu@yahoo.com

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);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

10

SrinivasReddyAmedapu@yahoo.com

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
1234
1234
1234
Enter size of matrix B: 3 4
Enter values into 3 X 4 matrix
1111
2222
3333
Matrix A
Contents of matrix are
1 2 3 4
1 2 3 4
1 2 3 4

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

11

SrinivasReddyAmedapu@yahoo.com

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
123
456
Enter size of matrix B: 2 2
Enter values into 2 X 2 matrix
11
22
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);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

12

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

Enter size of matrix B: 4 1


Enter values into 4 X 1 matrix
1234
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
1234
5678
Enter size of matrix B: 2 3
Enter values into 2 X 3 matrix
444
777
Multiplication of matrices is not possible
Enter size of matrix A : 3 4
Enter values into 3 X 4 matrix
1234
5678
9 10 11 12
Enter size of matrix B: 4 5
Enter values into 4 X 5 matrix
11111
22222
33333
44444
Matrix A
Contents of matrix are
1 2 3 4
5 6 7 8
9 10 11 12
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

14

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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);
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

16

SrinivasReddyAmedapu@yahoo.com

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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

17

SrinivasReddyAmedapu@yahoo.com

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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

18

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

Week 8 (a) Write a program to generate Pascals 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
1
1
1

1
6

10
15

4
5

10
20

5
15

1
6

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

20

SrinivasReddyAmedapu@yahoo.com

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;
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

21

SrinivasReddyAmedapu@yahoo.com

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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

22

SrinivasReddyAmedapu@yahoo.com

(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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

23

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

25

SrinivasReddyAmedapu@yahoo.com

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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

26

SrinivasReddyAmedapu@yahoo.com

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);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

27

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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");
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

29

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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;
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

32

SrinivasReddyAmedapu@yahoo.com

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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

33

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

35

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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]);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

40

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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;
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

42

SrinivasReddyAmedapu@yahoo.com

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;
}

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

43

SrinivasReddyAmedapu@yahoo.com

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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

44

SrinivasReddyAmedapu@yahoo.com

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]);
}
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

45

SrinivasReddyAmedapu@yahoo.com

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);
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

46

SrinivasReddyAmedapu@yahoo.com

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

SrinivasReddyAmedapu@yahoo.com

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]);
}

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

48

SrinivasReddyAmedapu@yahoo.com

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;
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

49

SrinivasReddyAmedapu@yahoo.com

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);
Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department
NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

50

SrinivasReddyAmedapu@yahoo.com

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);
}
}

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

51

SrinivasReddyAmedapu@yahoo.com

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:
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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

52

SrinivasReddyAmedapu@yahoo.com

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]);
}

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

53

SrinivasReddyAmedapu@yahoo.com

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++;
}
}

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

54

SrinivasReddyAmedapu@yahoo.com

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

Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department


NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU

55

Potrebbero piacerti anche