సీ ప్రోగ్రాంలో మ్యాథ్స్ లైబ్రరీ చాలా ముఖ్యమైంది. మనం ప్రోగ్రాంలో sine, cos, tan, etc.. లాంటి మ్యాథమెటిక్ సూత్రాలను ఉపయోగించడానికి మ్యాథ్స్లైబ్రరీ అవసరం. ఈ మ్యాథమెటిక్ విలువలను ఉపయోగింపచడానికి అవసరమైన ప్రీడిఫైన్ ( ముందుగా రాసి ఉంచిన) ప్రోగ్రాంలు ఈ లైబ్రరీలో రాసి ఉంటాయి. కేవలం Operatorని మాత్రమే మ్యాథ్స్ లైబ్రరీ అవసరం లేకుండా ఉపయోగించగలం. మాథ్స్ లైబ్రరీలోని ఫంక్షనులను వాడుకొని కొన్ని చిన్న ప్రోగ్రాములను ఎలా రాయలో ఈ పాఠంలో తెలుసుకుందాం. మాథ్స్ కి సంబంధించిన రెడీమేడ్ ప్రోగ్రామ్లు (ఫంక్షనులు) చాలా వున్నాయి. వాటిని ఉపయోగించకుండా మనం చాలా ప్రోగ్రాంలు రాయడం కష్టం. ఈ ఫంక్షన్స్ని వాడాలంటే, ముందుగా #include
ఈ మాథ్స్ లైబ్రరీలో చాలా ఫంక్షనులు వున్నాయి. ఉదాహరణకు, sqrt, log10, pow, sin, cos, etc. . వీటిని ఎలా వాడి ప్రోగ్రాములు రాయాలో నేర్చుకుందాం. మాథ్స్ లో వాడే xy ని, సీ లాంగ్వేజ్ లో రాయలంటే pow అనే ఫంక్షన్ ఉపయోగించి pow(x,y) అని రాస్తాం.
Note: ఈ ఫంక్షన్లను ప్రోగ్రాంలో ఉపయోగిస్తే మరచి పోకుండా #include
ఉదాహరణ: ప్రిన్సిపల్ మొత్తం (p), ధర ( r ), సమయం (t) సంవత్సరాలలో తీసుకొని సాధారణ వడ్డీ (simple interest), చక్ర వడ్డీ (compound interest) లెక్కించి ప్రింట్ చేసేలా ప్రోగ్రామ్ రాయండి ?
సమాధానం:
* అవసరమైన ఫార్ములాలు రాసుకోండి
Simple interest=prt / 100
Compound interest= p*(1+r/100)t - p
ప్రోగ్రాం:
#include
#include
int main()
{
float p,r,t,simple,compound;
printf("Enter principal amount, rate and time duration\n");
scanf("%f%f%f",&p,&r,&t);
simple=p*r*t/100;
compound=p*pow(1+r/100.0,t)-p;
printf("Simple Interest=%f\nCompound Interest=%f\n", simple, compound);
return (0);
}
Output:
ఉదాహరణ
ఒక కంపెనీ నెలసరి డిపాజిట్ స్కీమ్ లాంటి పథకాల్లో ఎంత డిపాజిట్ చేస్తే మెచ్యూరిటీ విలువ ఎంత అవుతుందో తెలుసుకోవడానికి ప్రోగ్రాం రాయండి ?
ప్రోగ్రాం రాసే విధానం
* ఈ ప్రోగ్రాంకి నెలసరి వాయిదా వాల్యూ ( R ), సంత్సరం వడ్డీ రేటు( rr ), ఎన్ని క్వార్టర్ (n n ) లు ఇన్ స్టాల్ మెంట్ పే చేస్తామో Input లాగా యివ్వాలి.
* ఉపయోగించాల్సిన ఫార్ములా
Maturity = ( R * [(1+r)n - 1 ] ) / (1-(1+r)-1/3)
ప్రోగ్రాం:
#include
#include
int main()
{
float R,r,n,Maturity;
printf("Enter Monthly Installment, rate and number of quarters\n");
scanf("%f%f%f",&R,&r,&n);
Maturity=(R * (pow(1+r/400, n) - 1)) / (1-pow(1+r/400,-1/3.0) );
printf("Maturity Amount=%f\n", Maturity);
return (0);
}
Output:
ఉదాహరణ: ఒక త్రిభుజం మూడు మూడు భుజాల కొలతలు (a, b, c) ఇన్పుట్గా ఇచ్చి త్రిభుజ వైశాల్యాన్ని లెక్కించే విధంగా ప్రోగ్రాం రాయండి
ప్రోగ్రాం రాసే విధానం
* ప్రోగ్రాం రాయడానికి మనకు అవసరమైన సూత్రాన్ని రాసుకోవాలి.
* అవసరమైన సూత్రం
ప్రోగ్రాం:
#include
#include
int main()
{
float a,b,c,s,area;
printf("Enter three sides of a triangle\n");
scanf("%f%f%f",&a,&b,&c);
s=(a+b+c)/2.0;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("Area=%f\n", area);
return (0);
}
Output:
ఉదాహరణ: ఒక integerను ఇన్పుట్లా తీసుకొని, దానిలో ఎన్ని అంకెలున్నాయి divide చేయగలగిన అతి పెద్ద 10p లాగా ఉండే సంఖ్యను ప్రింట్ అయ్యాలే ప్రోగ్రాం రాయండి. ?
ఈ ప్రోగ్రాంలో p అనేది ఓ integer.
ప్రోగ్రాం రాసే విధానం
* ఈ ప్రోగ్రాంలో p అనేది ఒక integer. ఉదాహరణకు
178 ఇన్పుట్ లా ఇస్తే, ఫలితం 3, 100. 1238 ఇన్పుట్ లా ఇస్తే ఫలితం 4, 1000.
12538 ఇన్పుట్ ఇస్తే ఫలితం 5, 10000. వచ్చే విధంగా ప్రోగ్రాం రాయాలి.
* ప్రోగ్రాం ఫలితం రావాలంటే, ఈ కింద ఇచ్చిన వాటిని గమనించండి
log10(10)=1
log10(99)=1.9999999999
log10(100)=2
log10(999)=2.9999999999
log10(1000)=3
log10(9999)=3.9999999999
log10(10000)=4
log10(99999)=4.9999999999
log10(100000)=5
log10(999999)=5.9999999999
పైన ఇచ్చిన వాటి నుంచి గమనిస్తే . ఏ సంఖ్యకు log10 అప్లై చేస్తే వచ్చిన విలువ integer భాగము విలువకు ఒకటి కలిపితే ఆ సంఖ్యలో ఉన్న అంకెలెన్నో తెలుస్తాయి.
పైన ఇచ్చిన వాటి నుంచి గమనిస్తే . ఏ సంఖ్యకు log10 అప్లై చేస్తే వచ్చిన విలువ integer భాగము విలువకు ఒకటి కలిపితే ఆ సంఖ్యలో ఉన్న అంకెలెన్నో తెలుస్తాయి.
* అలాగే రెండో దానికి కూడా ఇక్కడే సమాధానం ఉంది. ఇన్పుట్ 178 ఇస్తే మనకు అవుట్పుట్ 100 రావాలి. అంటే 102 రావాలి. 178 log10 integer భాగం 2.
* 1238 ఇస్తే మనకు 1000 రావాలి అంటే 103 రావాలి. 1238 log10 integer భాగం3.
* ఈ ప్రోగ్రాంలో మనం ఇచ్చిన సంఖ్య log10 integer భాగం (p) కనుక్కొని, దానికి 10p విలువను లెక్కించి Output వచ్చేలా ప్రోగ్రాం రాయాలి.
ప్రోగ్రాం:
#include
#include
int main()
{
int n,p,nd,F;
printf("Enter an integer\n");
scanf("%d",&n);
p=log10(n);
nd=p+1;
F=pow(10,p);
printf("Number of Digits=%d\nLargest Divisor=%d\n", nd,F);
return (0);
}
Output:
ఉదాహరణ: ఒక బంతిని θ కోణంతో పైకి విసిరితే ఎంత ఎత్తుకు వెళుతుంది. అది ఎంత దూరం పడుతుందో లెక్కించే విధంగా ప్రోగ్రాం రాయండి ?
ప్రోగ్రాం రాసే విధానం:
* ప్రోగ్రాంకు అవసరమైన సూత్రాలు
* కోణాన్ని Degrees, minutes, secondsలలో ఇస్తాం కాని Output లో దూరం తెలుసుకోవడానికి ఉపయోగించే సూత్రంలో radians విలువ ఇవ్వాలి. కాబట్టి Degreesని radians లోకి మార్చాలి. తర్వాత h, R కాలిక్యులేట్ చేయాలి.
Note: g విలువను 9.8 గా తీసుకోవాలి .
3.14 radians = 180 Degrees
1 Degree = 60minutes
1 Minute = 60 seconds
ప్రోగ్రాం:
#include
#include
int main()
{
int d,m,s;
float u, h,R,a;
printf("Enter angle in degrees,minutes and second\n");
scanf("%d%d%d",&d,&m,&s);
printf("Enter initial velocity\n");
scanf("%f",&u);
a=(d+m/60.0+s/3600.0)*3.14/180.0;
h=u*u*sin(a)*sin(a)/(2*9.8);
R=u*u*sin(2*a)/9.8;
printf("Maximum Height=%f\nMaximum Horizontal Distance=%f\n", h, R);
return (0);
}
Output:
మాథ్స్ లైబ్రరీలో cos, tan,sin, etc., కూడా ఉంటాయి. మనం గుర్తుంచుకోవాల్సిన విషయం వీటన్నింటికి కూడా కోణాన్ని radians లో ఇవ్వాలి abs, fabs, dabs అనేవి కచ్చితమైన విలువను కనుక్కోవడానికి ఉపయోగిస్తాం.
* ఒక integer కచ్చితమైన విలువను కనుక్కోవడానికి abs వాడతాం.
* float కచ్చితమైన విలువను కనుక్కోవడానికి fabs ఉపయోగిస్తాం
* double కచ్చితమైన విలువను కనుక్కోవడానికి dabs వాడతాం.
ఉదాహరణకు, int x=7, y=-19; అయితే abs(x) విలువ 7 అవుతుంది. abs(y) అనేది 19 అవుతుంది.
float x=7.12, y=-19.78; అయితే abs(x) విలువ 7.12 అవుతుంది. abs(y) విలువ 19.78 అవుతుంది.
Modulus Operator:
ఇప్పటి వరకు, మనం +,-,*,/ లను ఎలావాడాలో నేర్చుకొన్నాం. అలాగే, సీ లాంగ్వేజిలో మరో operator ఉంది. అదే modulus operator(%). ఇది కూడా binary operator, అంటే దీనికి కూడా రెండు operands ఉంటాయి. రెండూ operands కూడా integer టైపుగా ఉండాలి. A, B లు రెండు integer operands అయితే, A%B=|A| ను |B| divide చేస్తే మిగిలేది. ఫలితానికి సంబంధించి sign Aలో sign లాగా ఉంటుంది. ఉదాహరణకు 10%3=1, 10%-3=1, -10%3=-1, -10%-3=-1., A%B కాబట్టి సున్న అయితే B ను A కి factor అని అంటాం. ఈ operatorను వాడాలి అంటే
ఒక integer ను ఇన్పుట్ లా తీసుకొని దాని చివరి అంకెను లెక్కించేవిధంగా ప్రోగ్రాం రాయండి
ఉదాహరణ:
ఒక integer ను ఇన్పుట్ లాగా తీసుకొని దాని చివరి అంకెను లెక్కించేవిధంగా ప్రోగ్రాం రాయండి ?
ప్రోగ్రాం రాసే విధానం:
* ఈ ప్రోగ్రాం రాయడానికి ఇచ్చిన నెంబర్కి 10తో modulus అప్లై చేస్తాం
ప్రోగ్రాం:
#include
int main()
{
int dig,n;
printf("Enter in integer\n");
scanf("%d",&n);
dig=n%10;
printf("Last digit=%d\n", dig);
return (0);
}
NB Venkateswarlu
M.Tech(IIT-Kanpur)
Ph.D (BITS),PDF(UK),
Sr.Prof., CSE, AITAM, Tekkali