# Srinivas Reddy Amedapu, CPDS, CP Lab, JNTU Hyderabad

Research Scholar en NIT Trichy
6 de Jan de 2013
1 de 55

### Srinivas Reddy Amedapu, CPDS, CP Lab, JNTU Hyderabad

• 1. 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 Numbersn",n); Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 1
• 2. 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 aren1",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 2
• 3. 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 valuesn"); 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 valuesn"); 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 3
• 4. 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 4
• 5. 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 5
• 6. 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 integersn"); 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 6
• 7. 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 integersn"); 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 7
• 8. SrinivasReddyAmedapu@yahoo.com Recursive #include<stdio.h> void main() { int a,b,val,temp; int GCD(); printf("nEnter two positive integersn"); 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 operatorn"); 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 8
• 9. 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 integersn",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 9
• 10. SrinivasReddyAmedapu@yahoo.com printf("nArray values aren"); 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 An"); print2D(a,m1,n1); printf("nMatrix Bn"); print2D(b,m2,n2); printf("nMatrix Cn"); 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
• 11. 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 aren"); 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 matrixn",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
• 12. 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 An"); print2D(a,m1,n1); printf("nMatrix Bn"); print2D(b,m2,n2); printf("nMatrix A x Bn"); print2D(c,m3,n3); } Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 12
• 13. 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 aren"); 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 matrixn",m,n); for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&x[i][j]); } Enter size of matrix A : 2 4 Enter values into 2 X 4 matrix 1234 1111 Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 13
• 14. 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
• 15. 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
• 16. 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
• 17. 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
• 18. 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
• 19. 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 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 Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 19
• 20. SrinivasReddyAmedapu@yahoo.com 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("nn"); 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 Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 20
• 21. 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
• 22. 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
• 23. 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 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 Srinivas Reddy Amedapu, Full Time Research Scholar, CSE Department NATIONAL INSTITUTE OF TECHNOLOGY, TRICHY, TAMIL NADU 23
• 25. 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
• 26. 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:TCBIN>dir asrc*.* Volume in drive C has no label. Volume Serial Number is 60A8-805B Directory of C:TCBIN 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
• 27. SrinivasReddyAmedapu@yahoo.com C:TCBIN>asrcpy asrcpy.c aravind.c File Copied C:TCBIN>asrcpy sss.c yyy.c Source File Not Existing C:TCBIN>asrcpy asrcpy.c yy.c zz.c Use Command Properly Command SourceFileName TargetFileName C:TCBIN>asrcpy aravind.c jntuh.c File Copied C:TCBIN>dir jnt*.* Volume in drive C has no label. Volume Serial Number is 60A8-805B Directory of C:TCBIN 01/05/2013 11:49 PM 485 JNTUH.C 1 File(s) 485 bytes 0 Dir(s) 36,109,844,480 bytes free C:TCBIN>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
• 28. 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:TCBIN>asrtype yy.c Source File Not Existing C:TCBIN>asrtype simple.c void main() { printf("nWelcome to JNTU--Aravind Reddy CSE"); } C:TCBIN>asrtype simple.c asrtype.c Use Command Properly Command FileName C:TCBIN>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
• 29. 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:TCBIN>asrmerg simple.c hworld.c aravind.c C:TCBIN>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
• 30. SrinivasReddyAmedapu@yahoo.com C:TCBIN>type hworld.c #include<stdio.h> void main() { printf("nHello World!"); printf("nThis is Aravind Reddy"); printf("nRoll No. 12011U0502, CSE"); } C:TCBIN>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:TCBIN>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
• 31. 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
• 32. 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 stopn"); 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
• 33. SrinivasReddyAmedapu@yahoo.com void print(nodeptr p) { printf("nContents of Linked List aren"); 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
• 34. 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
• 35. 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 aren"); for(i=top;i>=0;i--) printf("ntt%4d",stk[i]); } void options() { printf("nAvailable optons aren"); printf("ntt0. Options"); printf("ntt1. Push"); printf("ntt2. Pop"); printf("ntt3. Display"); printf("ntt4. 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
• 36. 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
• 37. 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
• 38. SrinivasReddyAmedapu@yahoo.com void display(nodeptr p) { printf("nContents of Stack aren"); while(p) { printf("nt%4d",p->data); p=p->link; } } void options() { printf("nAvailable optons aren"); printf("nt0. Options"); printf("nt1. Push"); printf("nt2. Pop"); printf("nt3. Display"); printf("nt4. 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
• 39. 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
• 40. 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
• 41. SrinivasReddyAmedapu@yahoo.com void options() { printf("nAvailable operations"); printf("nt1. Insert"); printf("nt2. Delete"); printf("nt3. Display"); printf("nt4. 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
• 42. 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
• 43. 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("nt1. Insert"); printf("nt2. Delete"); printf("nt3. Display"); printf("nt4. 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
• 44. 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
• 45. 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 valuesn",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
• 46. 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
• 47. 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
• 48. 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
• 49. 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
• 50. 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
• 51. 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
• 52. 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
• 53. 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
• 54. 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
• 55. 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