'రి'లేషనల్, కండిషనల్ ఆపరేటర్లను ఉపయోగించి ప్రోగ్రాం రాయండం ఇంతకుముందు నేర్చుకున్నాం . ఈ పాఠంలో మరిన్ని ఉదాహరణలను అభ్యాసం చేద్దాం. అంతే కాకుండా మరికొన్ని ఆపరేటర్లను ఉపయోగించి ప్రోగ్రామ్లు రాయండం తెలుసుకుందాం.
ఉదాహరణ: 1
ఇన్పుట్గా ఒక పాయింట్ ఇచ్చి ఆ పాయింట్ వృత్తం పై ఉందో లేదో ప్రింట్ చేసేలా ప్రోగ్రాం రాయండి?
ప్రోగ్రాం రాసే విధానం
* ముందుగా ప్రోగ్రాంలో పాయింట్ x, y co-ordinates తో పాటు circle పెరామీటర్స్, వ్యాసార్థం ఇవ్వాలి.
* పాయింట్ వృత్తం పై ఉందో లేదో తెలియాలంటే అది వృత్త కేంద్రం నుంచి ఎంత దూరంలో ఉందో కనుక్కోవాలి
* ఆ దూరం వ్యాసార్థనికి సమానం అయితే పాయింట్ వృత్తంపై ఉన్నట్లుగా ప్రింట్ చేసే ప్రోగ్రాం రాయాలి
ప్రోగ్రాం:
#include
int main()
{
float a,b,r,x,y;
printf("Enter x and y co-ordinates of the point\n");
scanf("%f%f",&x,&y);
printf("Enter center co-ordinates of circle and its radius\n");
scanf("%f%f%f",&a,&b,&r);
( ((x-a)*(x-a)+(y-b)*(y-b))==r*r)? printf("On the Circle\n"): printf("Not on the given circle\n");
return (0);
}
Output:
ఉదాహరణ: 2
మూడు సంఖ్యలను ఇన్ పుట్గా ఇచ్చి ఆ మూడింటిలో పెద్ద సంఖ్యను గుర్తించి ప్రింట్ చేసే ప్రోగ్రాం రాయండి?
ప్రోగ్రాం రాసే విధానం
* ముందుగా మూడు సంఖ్యలను ఇన్ పుట్ గా తీసుకునేలా ప్రోగ్రాం రాయాలి
* తరువాత మూడో సంఖ్యను ఇతర సంఖ్యలతో పోలుస్తు conditional if ప్రోగ్రాం రాయాలి
ప్రోగ్రాం :
#include
int main()
{
int a,b,c,max;
printf("Enter three integers\n");
scanf("%d%d%d",&a,&b,&c);
max=(a>b)?a:b;
max=(c>max)?c:max;
printf("Maximum out of three=%d\n", max);
return 0;
}
Output:
{ పై ప్రోగ్రాంను మరో విధంగా కూడా రాయవచ్చు.
* మొదటి సంఖ్యను ముందుగా అన్నింటికన్నా పెద్దదిగా తీసుకోవాలి.
* రెండో సంఖ్యను రీడ్ చేసిన తర్వాత, అది మొదటి సంఖ్య కంటే పెద్దది అయితే రెండో సంఖ్యనే పెద్ద సంఖ్యగా కంప్యూటర్ గుర్తిస్తుంది
* ఇలానే మూడో సంఖ్య రెండో సంఖ్యను రీడ్ చేస్తుంది. ఇది పెద్ద సంఖ్య అయితే దీన్నే పెద్ద సంఖ్యగా కంప్యూటర్ గుర్తిస్తుంది. పెద్దది కాకపోతే రెండో సంఖ్య నే పెద్ద సంఖ్యగా ఉండిపోతుంది.
* ఇలా ఎన్ని రీడ్ చేసిన వాటికన్నా పెద్దదానికన్నా పెద్దది అయితే, దాన్నే అన్నింటికన్నా పెద్దది అని తీసుకుంటుంది. ఇలా ఎన్ని సంఖ్యలు ఉన్నఅందులో పెద్ద సంఖ్యను కనుక్కోవచ్చు
ఈ పద్ధతి గురించి తరువాతి పాఠంలో నేర్చుకుందాం. }
పై ప్రోగ్రాంలో ఇన్పుట్ని మరో విధంగా ప్రింట్ చేసేవిధంగా ప్రోగ్రాం
#include
int main()
{
int a,max;
printf("Enter first number\n");
scanf("%d",&max);
printf("Enter second number\n");
scanf("%d",&a);
max=(a>max)?a:max;
printf("Enter Third number\n");
scanf("%d",&a);
max=(a>max)?a:max;
printf("Maximum out of three=%d\n", max);
return 0;
}
Output
ఉదాహరణ: 3
అసలు (principal amount) (p), శాతం ( r ), సమయం (t) సంవత్సరాల్లో ఇన్ పుట్గా తీసుకొని వడ్డీ లెక్కించి ప్రింట్ చేయాలి. సమయం ఒక సంవత్సరం కన్నా తక్కువ అయితే సాధారణ వడ్డీ (simple interest) లేకపొతే చక్ర వడ్డీ (compound interest) ప్రకారం వడ్డీ లెక్కించాలి ?
ప్రోగ్రాం రాసే విధానం
* సాధారణ, చక్రవడ్డీల సూత్రాలను ఉపయోగించాలి
* సమయంలో తేడా వస్తే లెక్కించే విధంగా conditional if ప్రోగ్రాం రాయాలి
సూత్రం:
ప్రోగ్రాం:
#include
#include
int main()
{
float p,r,t,interest;
printf("Enter principal amount, rate and time\n");
scanf("%f%f%f",&p,&r,&t);
interest=(t<1)? (p*r*t/100.0): ( p*pow(1+r/100.0,t)-p);
printf("Interest=%f\n", interest);
return 0;
}
Output:
ఉదాహరణ: 4
ఒక వ్యక్తి సంవత్సర జీతం ఇన్పుట్ గా తీసుకొని, అతడు కట్టాల్సిన ఆదాయపు పన్ను ఎంతో లెక్కించి ప్రింట్ చేసే ప్రోగ్రాం రాయండి
ప్రోగ్రాం రాసే విధానం
* ముందు టాక్స్ 0 అనుకుందాం . తర్వాత జీతం నుంచి రూ.1,00,000 తీసివేసి మిగిలిన దానికి 10% చొప్పున కడతాం.
* జీతం 1,50,000 కన్నా ఎక్కువ వుంటే, ఎక్కువవున్న దానికి 10% కట్టి ఇంతకు ముందు దానికి కలుపుతాము.
* జీతం 2,50,000 కన్నా ఎక్కువ ఉంటే, ఎక్కువవున్న దానికి 10% కట్టి ఇంతకు ముందు దానికి కలుపుతాం.
ప్రోగ్రాం
#include
int main()
{
float sal,tax=0;
printf("Enter total yearly salary\n");
scanf("%f",&sal);
tax=(sal>=100000)?(sal-100000)*0.1:tax;
tax=(sal>=150000)?tax+(sal-150000)*0.1:tax;
tax=(sal>=250000)?tax+(sal-250000)*0.1:tax;
printf("Income Tax Payable=%f\n",tax);
return 0;
}
Output
మరో పద్ధతి
#include
int main()
{
float sal,tax=0;
printf("Enter total yearly salary\n");
scanf("%f",&sal);
tax=0.1*( (sal>=100000)*(sal-100000)+
(sal>=150000)*(sal-150000) +
(sal>=250000)*(sal-250000) );
printf("Income Tax Payable=%f\n",tax);
return 0;
}
* ప్రోగ్రాం రాసేటప్పుడు రెండు కండిషన్లను కలపాల్సి ఉంటుంది.
* అప్పుడు, *, + లు ఉపయోగించవచ్చు . ఉదాహరణకు, ఈ కింద ఇచ్చిన
* (expr1)*(expr2) గా కండిషన్లను కలిపితే రెండూ (expr1, expr2) సత్యం (True) అయినప్పుడు మాత్రమే ఫలితం సత్యం వస్తుంది .
* అంటే expr1, expr2 లు రిలేషనల్ expressions అయితే, రెండు సత్యం అయితేనే మొత్తం సత్యం అవుతుంది.
* (expr1)+(expr2) గా కండిషన్లను కలిపితే expr1, expr2 లలో ఏ ఒక్కటి సత్యం అయినా సత్యం అవుతుంది.
ఉదాహరణ: 5
మూడు సంఖ్యలను ఇన్పుట్ గా తీసుకొని అవి సహజక్రమం ( natural order ) లో ఉన్నాయా లేదో గుర్తించి ప్రింట్ చేయాలి ?
ప్రోగ్రాం రాసే విధానం
* Natural ఆర్డర్ అంటే ఉదాహరణ 7, 8, 9 ఇస్తే ఆర్డర్ లో ఉన్నట్లు, 7, 9, 10 ఇస్తే ఆర్డర్ లో లేని అంకెలు.
* మొదటి రెండు సంఖ్యల తేడా 1, తరువాతి రెండు సంఖ్యల తేడా 1 ఉందో లేదో లెక్కించాలి.
* ఉదాహరణకు a,b,c లు మూడు సంఖ్యలు అయితే (b-a) 1, (c-b) 1 గా ఉంటే natural ఆర్డర్ అని ప్రింట్ చేసేలా ప్రోగ్రాం రాయాలి.
ప్రోగ్రాం
#include
int main()
{
int a, b, c;
printf("Enter three integers\n");
scanf("%d%d%d", &a,&b, &c);
(((b-a)==1)*((c-b)==1))?printf("Strict natural order\n"):printf("Not in strict natural order\n");
return 0;
}
Output
ఉదాహరణ 6
మూడు సంఖ్యలను ఇన్పుట్ గా ఇస్తే చివరి రెండు మొదటి సంఖ్యకు కారణాంకాలయితే అవును (Yes) అని లేకపోతే కాదు ( No ) అని ప్రింట్ చేయాలి ?
ప్రోగ్రాం
#include
int main()
{
int a, b, c;
printf("Enter three integers\n");
scanf("%d%d%d", &a,&b, &c);
( ( a%b==0) * (a%c==0)) ? printf("Yes\n"):printf("No\n");
return 0;
}
Output
ఉదాహరణ 7
ఒక త్రిభుజం మూడు భుజాల కొలతలు తీసుకొని, అది సమబాహుత్రిభుజం (equilateral triangle) అవునా కాదా అని గుర్తించి ప్రింట్ చేయాలి ?
ప్రోగ్రాం రాసే విధానం
* త్రిభుజం మూడు భుజాలు సమానంగా ఉంటే దాన్ని సమబాహుత్రిభుజం అంటారు.
* a,b,c మూడు భుజాలనుకుంటే a=b=c అయితే దాన్ని సమబాహుత్రిభుజం అని ప్రింట్ చేయాలి.
* ఈ ప్రోగ్రాంలో మొదటి రెండు భుజాలను పోల్చి చూడాలి. తరువాత రెండు విలువలను పోల్చి చూడాలి.
ప్రోగ్రాం
#include
int main()
{
float a, b, c;
printf("Enter three sides of a traingle\n");
scanf("%f%f%f", &a,&b, &c);
( ( a==b) * (a==c)) ? printf("Yes\n"):printf("No\n");
return 0;
}
Output
Implicit Assignment Statements
* Salary =Salary + bonus; అనే దానిని, షార్ట్ హ్యాండ్లో Salary += bonus; అని రాయోచ్చు.
ఇలా రాసే వాటినే implicit assignment statements అని అంటారు . ఇవి మన టైపింగ్ సమయాన్ని తగ్గిస్తాయి. పెద్ద ప్రోగ్రాంలు రాసేటప్పుడు ఈ పద్ధతి ఎక్కువగా ఉపయోగపడుతుంది.
ఉదాహరణ: 8
ఒక త్రిభుజం మూడు భుజాల కొలతలు తీసుకొని ఆ త్రిభుజం లంభకోణత్రిభుజం (Right angled triangle) అవునా కాదా అని గుర్తించి ప్రింట్ చేయాలి ?
ప్రోగ్రాం రాసే విధానం
* ఒక త్రిభుజం భుజాలు a, b, c లయితే ఏ రెండు భుజాల మొత్తం మూడోదాని వర్గం అయినా అది లంబకోణంత్రిభుజం అవుతుంది.
* ముందు combinationsను చెక్ చేయాలి. a^2+b^2= =c^2, a^2+c^2= =b^2, b^2+c^2= =a^2
* ఇలా చేసేటప్పుడు రెండు రిలేషనల్ expressionల మధ్యలో + ను ఉపయోగిస్తాం . పైన చెప్పిన implicit assignment statements ఉపయోడించి వర్గా(square) లను లెక్కిస్తాం.
ప్రోగ్రాం:
#include
int main()
{
float a, b, c;
printf("Enter three sides of a traingle\n");
scanf("%f%f%f", &a,&b, &c);
a*=a;
b*=b;
c*=c;
( ((a+b)==c) + ((a+c)==b) + ( (b+c)==a) ) ? printf("Yes\n"):printf("No\n");
return 0;
}
Output
ఉదాహరణ 9
ఒక సంవత్సరం నెంబర్ని ఇన్పుట్గా ఇస్తే ఆ సంవత్సరం లీప్ సంవత్సరం అవునో కాదో అని లెక్కించి ప్రింట్ చేయాలి
ప్రోగ్రాం రాసే విధానం
* ఒక సంవత్సరం లీప్ సంవత్సరం అవునో కాదో తెలియాలంటే. దాన్ని 400తో భాగించాలి శేషం సున్నా రావాలి అంతే కాకుండా ఆ సంఖ్య 100తో నిశ్శేషంగా భాగించకూడదు
* మొదట రెండు లాజికల్ expressions మధ్యలో + ఉపయోగించాలి. అంతే కాకుండా అందులో ఉండే రెండు లాజికల్ expressions మధ్యలో * వాడాలి.
ప్రోగ్రాం
#include
int main()
{
int y;
printf("Enter year number\n");
scanf("%d", &y);
( ( y%400==0) + ( (y%4==0) * ( y%100!=0) ) ) ? printf("Yes\n"):printf("No\n");
return 0;
}
Output
ఉదాహరణ 10
మూడు సంఖ్యలను ఇన్పుట్గా ఇస్తే అందులో పెద్ద సంఖ్యను లెక్కించి ప్రింట్ చేసే ప్రోగ్రాం రాయండి ?
ప్రోగ్రాం రాసే విధానం
* ముందుగా ఇచ్చిన నెంబర్లలో మొదటి సంఖ్యను మిగిలిన సంఖ్యలతో పోల్చుతాం మొదటి సంఖ్య పెద్దది అయితే అది ప్రింట్ చేస్తాం కాకపోతే మిగిలిన వాటిని పోల్చుతాం ఇలా చెక్ చేసే విధంగా ప్రోగ్రాం రాయాలి
ప్రోగ్రాం
#include
int main()
{
int a,b,c;
printf("Enter three numbers\n");
scanf("%d%d%d", &a,&b,&c);
( (a>b)*(a>c) ) ? printf("%d\n",a):printf("%d",(b>c?b:c) );
return 0;
}
Output
పై ప్రోగ్రాంను మరో విధంగా రాసే పద్ధతి
#include
int main()
{
int a,b,c;
printf("Enter three numbers\n");
scanf("%d%d%d", &a,&b,&c);
( (a>b) ) ? printf("%d\n",(a>c? a: c) ):printf("%d",(b>c? b: c) );
return 0;
}
ఉదాహరణ 11
ఒక విద్యార్థి ఐదు సబ్జెక్టుల మార్కులు ఇన్పుట్గా తీసుకొని అతడు ఉత్తీర్ణుడయ్యాడో లేదో గుర్తించి ప్రింట్ చేయాలి
ప్రోగ్రాం రాసే విధానం
* ఈ ప్రోగ్రాంలో పాస్ మార్కులు రావాలంటే ప్రతి సబ్జెక్టులో 35 కన్నా ఎక్కువ రావాలి.
* ఈ లాజిక్ని * ఉపయోగించి రాసే పద్ధతి.
ప్రోగ్రాం
#include
int main()
{
int a,b,c,d,e,np,s;
printf("Enter a student marks in five tests\n");
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
((a>=35)* (b>=35)*(c>=35)*( d>=35) *(e>=35) )?printf("Passed\n"):printf("Failed\n");
return 0;
}
Output
NB Venkateswarlu
M.Tech(IIT-Kanpur)
Ph.D (BITS),PDF(UK),
Sr.Prof., CSE, AITAM, Tekkali