spring semester 2007programming and data structure1 exercises on structures and strings
TRANSCRIPT
![Page 1: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/1.jpg)
Spring Semester 2007 Programming and Data Structure 1
Exercises on Structures and Strings
![Page 2: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/2.jpg)
Spring Semester 2007 Programming and Data Structure 2
Q. 1
Define a structure data-type named _PLAYER which has the following members:
Name: A string of 30 characters.DOB: A string of 10 characters.Height: A floating point number.Weight: A floating point number.
![Page 3: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/3.jpg)
Spring Semester 2007 Programming and Data Structure 3
Structure Definition
typedef struct{
char Name[31];
char DOB[11];
float Height;
float Weight;
} _PLAYER;
![Page 4: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/4.jpg)
Spring Semester 2007 Programming and Data Structure 4
Q. 2
Write a main program which reads records of N players (N to be read from the keyboard) in an array of _PLAYER and prints their names and dates of birth.
![Page 5: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/5.jpg)
Spring Semester 2007 Programming and Data Structure 5
Structure Definition
#include <stdio.h>#define MAX_NO 100
typedef struct { char Name[31]; char DOB[11]; float Height; float Weight; } _PLAYER;
![Page 6: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/6.jpg)
Spring Semester 2007 Programming and Data Structure 6
Reading and Printingmain(){ _PLAYER pl[MAX_NO]; int N,i; printf("Give the number of players \n"); scanf("%d",&N); for(i=0;i<N;i++) { printf("Input the %d th player \n",i+1); printf("Name? \n "); scanf(“ %[^\n]",pl[i].Name);
printf("DOB as dd/mm/yyyy? \n"); scanf(“ %[^\n]",pl[i].DOB); printf("Height (cm.) and Weight (kg) ? \n"); scanf("%f%f",&pl[i].Height,&pl[i].Weight); } printf("Data read \n");
printf("Printing Name and Dates of Births \n"); for(i=0;i<N;i++) { printf("Player[%d]--> %s %s \n",i,pl[i].Name,pl[i].DOB); }
![Page 7: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/7.jpg)
Spring Semester 2007 Programming and Data Structure 7
Q. 3
Write a function which takes an array of _PLAYER as a parameter and returns the tallest player by deleting the player from the list and adjusting the array by moving the elements upward.
![Page 8: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/8.jpg)
Spring Semester 2007 Programming and Data Structure 8
Function Implementation
_PLAYER tallest_player(_PLAYER p[ ], int N) { int i; float maxHeight=-1; int maxPos; _PLAYER tmp; for(i=0;i<N;i++) { if (p[i].Height > maxHeight) { maxPos=i; maxHeight=p[i].Height; } }
tmp=p[maxPos]; for(i=maxPos+1;i<N;i++)
p[i-1]=p[i]; return(tmp); }
Deleting a player and readjusting array
Computing the array index for the tallest player
Return Tallest Player
![Page 9: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/9.jpg)
Spring Semester 2007 Programming and Data Structure 9
Q. 4
Use this function to print the Names of players in the descending order of their heights.
![Page 10: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/10.jpg)
Spring Semester 2007 Programming and Data Structure 10
Printing in ascending order of heightsmain(){ _PLAYER pl[MAX_NO]; int N,i; _PLAYER tallest; printf("Give the number of players \n"); scanf("%d",&N); for(i=0;i<N;i++) { printf("Input the %d th player \n",i+1); printf("Name? \n "); scanf("%[^\n]",pl[i].Name);
printf("DOB as dd/mm/yyyy? \n"); scanf(" %[^\n]",pl[i].DOB); printf("Height (cm.) and Weight (kg) ? \n"); scanf("%f%f",&pl[i].Height,&pl[i].Weight); } printf("Data read \n");
for(i=N;i>1;i--) { tallest=tallest_player(pl,i); printf("%s Height=%f \n",tallest.Name,tallest.Height); } printf("%s Height=%f \n",pl[0].Name,pl[0].Height);}
![Page 11: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/11.jpg)
Spring Semester 2007 Programming and Data Structure 11
Q. 5
(a)Write a function isLC( ) which takes a character as an input and returns 1 if it is a lower case alphabet else 0.
(b)Write the corresponding function isUC( ) for checking an upper case alphabet.
![Page 12: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/12.jpg)
Spring Semester 2007 Programming and Data Structure 12
Functions for checking alphabet cases
int isLC(char c){ if((c>='a') && (c<='z')) return 1; else return 0;}
int isUC(char c){ if((c>='A') && (c<='Z')) return 1; else return 0;}
![Page 13: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/13.jpg)
Spring Semester 2007 Programming and Data Structure 13
Q. 6
Write a function toLC( ) which takes a string as an input and replaces all the Upper Case alphabets to lower cases within it. The function also returns the number of changes it made.
![Page 14: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/14.jpg)
Spring Semester 2007 Programming and Data Structure 14
int toLC(char s[ ]){ int i, nChange=0;
for(i=0; s[i]!=0; i++) { if ((s[i]>='A') && (s[i]<='Z')) { s[i]=s[i]-('A'-'a'); nChange++; } } return nChange;}
![Page 15: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/15.jpg)
Spring Semester 2007 Programming and Data Structure 15
Q. 6-a
• Write the recursive implementation of toLC( ) for converting Upper Cases to Lower Case.
![Page 16: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/16.jpg)
Spring Semester 2007 Programming and Data Structure 16
int toLC(char s[ ],int pos){ if(s[pos]==0) return 0;
else
if((s[pos]>='A') && (s[pos]<='Z')) { s[pos]=s[pos]-('A'-'a'); return 1+toLC(s,pos+1); }
else return toLC(s,pos+1);}
![Page 17: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/17.jpg)
Spring Semester 2007 Programming and Data Structure 17
Q. 7
• Write a function complementString( ) which complements an input string by changing the cases of its alphabets. The function also returns the number of changes.
![Page 18: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/18.jpg)
Spring Semester 2007 Programming and Data Structure 18
int complementString(char s[ ]){ int i,nChange=0;
i=0; while(s[i]!=0) { if (isUC(s[i])) { s[i]=s[i]-('A'-'a'); nChange++; } else
If (isLC(s[i])) { s[i]=s[i]+('A'-'a'); nChange++; }; i++; } return nChange;}
![Page 19: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/19.jpg)
Spring Semester 2007 Programming and Data Structure 19
Q. 8
• (a) Write a function absd( ) which takes a value in double data-type and returns its absolute value in double.
• (b) Write a function expd( ) which computes ex for an input variable x (of double data type) by computing the following series summation with an accuracy of .0001.
ex= 1 + x/1! + x2/2!+ x3/3!+…………..
![Page 20: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/20.jpg)
Spring Semester 2007 Programming and Data Structure 20
double absd(double x){ if(x<0) return -x; else return x;}
double expd(double x){ double sum,term; double error_bound=.0001; int i;
term=1; sum=1; i=0;
while(absd(term)>error_bound) { i++; term=term*x/(double) i; sum=sum+term; }
return(sum);}
Factorial is notcomputed directly.
Xn/n!
![Page 21: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/21.jpg)
Spring Semester 2007 Programming and Data Structure 21
Q 8 (contd.)
• Write a program which computes exponential of values (to be read from the keyboard) in an infinite loop.
![Page 22: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/22.jpg)
Spring Semester 2007 Programming and Data Structure 22
#include <stdio.h>
double absd (double x){..}
double expd (double x){..}
main(){ double y,val;
while(1) { printf("Give y: "); scanf("%lf",&y);
val=expd(y);
printf("y= %lf exp(y)=%lf \n",y,val); }}
Give y: 1y= 1.000000 exp(y)=2.718279 Give y: -1y= -1.000000 exp(y)=0.367882 Give y: 23y= 23.000000 exp(y)=9744803446.248880 Give y: ^C
![Page 23: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/23.jpg)
Spring Semester 2007 Programming and Data Structure 23
Q. 9
• Write a function which returns square root of a floating point value with an accuracy of .00001, following the Newton-Raphson method.
• Newton-Raphson method: Solve: f(x)=0
Iteration: xn+1= xn- f(xn)/f’(xn)• Newton-Raphson method for square root: f(x)=x2-a Iteration: xn+1= xn- (xn
2 –a)/2xn
![Page 24: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/24.jpg)
Spring Semester 2007 Programming and Data Structure 24
float newton_sqrt (float x){ float error,xinit,xold,xnew; int iter_no=0;
if(x<=0) return (-1);
xinit=x; xold=xinit; do { xnew=xold- (xold*xold-x)/(2*xold); error= xnew-xold; if(error<0) error=-error; xold=xnew; iter_no++; } while(error>.00001); return(xold);}
main(){float a,root;
printf(“Input a? \n");scanf("%f",&a);printf(“a= %f \n",a);
root=newton_sqrt(a);if(root>0)printf("%f \n",root);}
![Page 25: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/25.jpg)
Spring Semester 2007 Programming and Data Structure 25
Q.10
• (a) Define a structure _PNT which has x-coordinate and y-coordinate (both of float data-type) as its members for representing a point in a 2-D space.
• (b) Write a function dist() which takes two points and returns the distance between them.
![Page 26: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/26.jpg)
Spring Semester 2007 Programming and Data Structure 26
typedef struct{ float x,y; } _PNT;
float dist(_PNT a, _PNT b){ float d; d=(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y); if(d>0) return((float)sqrt((double)d)); else return(0);}
![Page 27: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/27.jpg)
Spring Semester 2007 Programming and Data Structure 27
Q. 10
• (c) Define a function checkCircle( ) which takes center and radius of a circle and a point p as inputs and returns -1, 0 or 1 if p is outside, or, on its perimeter or inside the circle respectively. Use the function dist( ).
• (d) Write a main( ) function to read center and radius of a circle and a query point q. The program should print whether the point is outside or inside or on the circle.
![Page 28: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/28.jpg)
Spring Semester 2007 Programming and Data Structure 28
int checkCircle(_PNT c, float R, _PNT p){ float d;
d=dist(c,p);
if(d>R) return (-1); else if (d<R) return(1); else return(0);}
![Page 29: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/29.jpg)
Spring Semester 2007 Programming and Data Structure 29
main( ){ _PNT oc,p; float R; int flag;
printf("Read the center \n"); scanf("%f%f",&oc.x,&oc.y); printf("Read the radius \n"); scanf("%f",&R); printf("Read a point \n"); scanf("%f%f",&p.x,&p.y);
flag=checkCircle(oc,R,p);
switch(flag) { case 1: printf("Inside \n"); break; case -1: printf("Outside \n"); break; case 0: printf("On circle \n"); break; default: printf("?? \n"); }}
Read the center of circle 40 50Read the radius of circle 10Read a point 35 25Outside
![Page 30: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/30.jpg)
Spring Semester 2007 Programming and Data Structure 30
Q. 11
• (a) Write a function mean( ) which takes an array of N floating point numbers and computes their mean.
• (b) Write another function named sd( ) for same input for computing standard deviation. Use mean( ).
![Page 31: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/31.jpg)
Spring Semester 2007 Programming and Data Structure 31
float mean(float x[ ],int N){ int i; float sum=0;
for(i=0;i<N;i++) sum+=x[i];
return(sum/(float)N);}
float sd(float x[ ],int N){ int i; float sum=0, sqrsum=0; float mu, var, sigma;
for(i=0;i<N;i++) sqrsum+=x[i]*x[i];
mu=mean(x,N); var=sqrsum/(float) N-mu*mu;
if(var>0)
sigma=(float)sqrt((float)var); else sigma=0;
return(sigma);}
![Page 32: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/32.jpg)
Spring Semester 2007 Programming and Data Structure 32
Q. 11 (contd.)
• Write a main program to read N values in an array and compute their mean and standard deviation.
![Page 33: Spring Semester 2007Programming and Data Structure1 Exercises on Structures and Strings](https://reader036.vdocuments.site/reader036/viewer/2022062517/56649f265503460f94c3d854/html5/thumbnails/33.jpg)
Spring Semester 2007 Programming and Data Structure 33
#include <stdio.h>#include <math.h>
#define MAX_NO 100
float mean(float x [ ],int N){:} float sd(float x[ ],int N){:}
main(){ int i,N; float height[MAX_NO];
printf("Input N? \n"); scanf("%d",&N);
printf("Give %d values \n",N); for(i=0;i<N;i++) scanf("%f",&height[i]);
printf("Mean= %f \n",mean(height,N)); printf("S.D.= %f \n",sd(height,N));}
Input N? 5Give 5 values 5 10 20 30 40Mean= 21.000000 S.D.= 12.806249