Write a program To calculate age
Write a program To calculate
age
यदि Keyboard
से Date या Time Input करना
हो , तो Date या Time को हम अलग – अलग
टुकरों में Input नहीं कर सकते है |
ऐसे
Group
of Data को हमें एक साथ Input करना होता है |
एक
Date
या Time में हमेशा तीन हिस्से होते है , जो
क्रमशः Day , Month , Year या Hour , Minus , Seconds
को Represent करते है |
Keyboard
से जब इस प्रकार के Data को Read करना होता है , तब Data या Time Input करने का एक ही Message कर दिया जाता है और तीनो मानो
को एक साथ input कर
दिया जात है |
निम्न Program
द्वारा scanf( ) Function को इस प्रकार use
करने की कार्य – विधि को ज्यादा अच्छे तरीके से समझा जा सकता है |
ये
Program
user से उसकी Date of Birth (DOB) व Current
Date Input करने के लिए कहता है |
जब
user
उसकी DOB व Current Date Input कर देता है तब Program Output के रूप में उस user
की Current Age Display करता है |
Program
#include <stdio.h>
#include <conio.h>
main()
{
/* Declaration Section */
int dob_DD, dob_MM, dob_YYYY;
int cur_DD, cur_MM, cur_YYYY;
char dummy;
int age;
/* Input Section */
printf("Enter Date of Birth in DD/MM/YYYY Format : ");
fflush(stdin);
scanf("%2d%1c%2d%1c%4d", &dob_DD, &dummy, &dob_MM, &dummy,
&dob_YYYY);
printf("Enter Today's Date in DD/MM/YYYY Format : ");
fflush(stdin);
scanf("%2d%1c%2d%1c%4d", &cur_DD, &dummy, &cur_MM, &dummy,
&cur_YYYY);
/* Process Section */
age = cur_YYYY - dob_YYYY;
/* Output Section */
printf("\n Your Date of Birth is : ");
printf("%d%c%d%c%d", dob_DD, '/', dob_MM, '/', dob_YYYY);
printf("\n And you are %d years old now", age);
}
Output
Enter Date of Birth in DD/MM/YYYY Format : 10/01/1996
Enter Today's Date in DD/MM/YYYY Format : 16/07/2021
Your Date of Birth is : 10/1/1996
And you are 25 years old now
इस Program
को Run करते ही ये Program हमें DD/MM/YYYY Format में Birth Date Input
करने के लिए कहता है | जैसे
ही हम Birth
Date Input करते है , ये Program DD/MM/YYYY Format में ही हमसे Current Date Input करने के लिए कहता है
| जैसे ही हम Current
Date भी Input करते है , ये Program हमें हमारा Date of Birth व हमारी Current
Age Screen पर Display कर देता है |
इस Program
में हमने कई नए Concept Use किए है , लेकिन ये
Program पूरी तरह से Error Proof नहीं
है , क्योंकि ये जिस Format में Date Input करने के लिए कहता है , हमें उस Format को पूरी तरह
से follow करना पड़ता है |
यानी
हम Date
of Birth 10/01/1996 को 10/01/1996 Format में
Input नहीं कर सकते है |
यदि
हम ऐसा करते है , तो हमारा Program हमें सही Output
नहीं देता है |
जैसाकि हम देख
सकते है , कि Date एक ऐसा Data है
, जिसके होते तो तीन हिस्सों है , लेकिन इसके तीनो हिस्सों को एक ही बार में Input
करना जरुरी होता है | हम
देख सकते है कि इस Data में Day ,
Month व Year के अलावा एक और चौथा हिस्सा भी
है , जो Day , Month व Year को आपस में
एक दूसरों से अलग रखता है |
scanf( ) Function जब एक ही बार में एक से ज्यादा मानों को
Input के रूप में प्राप्त करना चाहते है , तब एक scanf( ) द्वारा जितने Date Computer की Memory में store करने होते है , उस सभी मानों को Control
Strings के साथ उनके variables को scanf(
) Function में ठीक उसी तरह से Specify किया
जाता है जिस तरह से printf( ) Function द्वारा एक से अधिक Identifiers
के मानों को Output में Display करने के लिए किया जाता है |
इस दोनों Function
के अंतर केवल इतना होता है की scanf( ) Function में specify किए जाने वाले सभी Identifiers
Keyboard Buffer से अपना मान प्राप्त करते है , और सभी मानों को Variables
की Reserved Memory Location पर भेजने के लिए
इन Variables के साथ Address Operator का
प्रयोग किया जाता है |
इस Program
में हमने scanf( ) Function में use किए जाने वाले Control Strings को थोड़ा अलग तरीके से
use किया है | scanf(
) Function के इस तरीके से Input
लेने की प्रक्रिया को Formatted Input कहते है
|
चूंकि एक Date
के पहले दो अंक Day को Represent करते है , इसलिए Input किए जाने वाले Date के पहले दो Character को ही हमें dob_DD व cur_DD Variable में Store करना होता है |
इस जरुरत को पूरा
करने के लिए हमें पहले Control String के साथ एक Digit
2 का प्रयोग %2 के रूप में किया है |
जब
हम इस तरह से Control String Use करते है तब compiler Keyboard से आने वाले Input में
से केवल पहले दो अंकों को ही dob_DD व cur_DD में store करता है |
चुंकि तीसरा Character
एक Separator के रूप में काम कर रहा है जो Day
को Month की Digit से
अलग करता है , इसलिए %1c Control String का प्रयोग करके इस
तीसरे Character को हमने dummy नाम के
एक Character प्रकार के Variable में Store
कर दिया है |
अब Input के
रूप में आने वाले अगले दो Digits Month को Represent करते है | केवल
in
दो Digits को प्राप्त करके dob_MM व cur_MM में
store करने के लिए हमें फिर से %2d का
प्रयोग किया है और Month को year से separate
करने वाले separator को फिर से %1c
Control String द्वारा dummy
नाम के Variables में Store कर लिया है | फिर
अंतिम 4
Digits को dob_YYYY व cur_YYYY
variable में store करने के लिए हमने %4d
Control String का प्रयोग
किया है |
इस program
में हमने निम्नानुसार एक Statement का scanf(
) Function से पहले प्रयोग किया है :
fflush(stdin);
ये Function
एक विशेष काम करता है |
जब
हम Keyboard
से Keys का Press करते
है , तब जरुरत के आधार पर विभन्न Characters विभन्न variables में store
हो जाते है | लेकिन
कई बार जब हम formatted Input का प्रयोग करते है , तब
keyboard से चाहे जितने Characters Input किए जाए , Variable में Control String में use किए
गए मान के अनुसार कुछ ही Characters Store होते है , शेष Characters
Keyboard के Buffer में ही पड़े रहेते है |
यदि हम Keyboard
के Buffer में पिछले Input के बचे हुए Characters को clear किए बिना ही scanf( ) Function user
से कोई मान Input करने के लिए नहीं कहता है,
बल्कि Keyboard के Buffer में stored
characters को ही use कर लेता है , जिससे Program
का Output सभी नहीं आता |
इस
स्थिति में ये Statement keyboard के Buffer में Stored बचे हुए Characters को clear करने का काम करता है , ताकि user को सभी Output प्राप्त हो
कई बार हमें ऐसी जरुरत भी पड़ जाती है , जिसमें हम एक
ही scanf( ) Function द्वारा एक से
ज्यादा Variables में मान तो Store करना
चाहते है , लेकिन किसी Formatted Input Process का Use
करना नहीं चाहते है | इस
स्थिति में विभन्न Identifierss में मानों को store
करने के लिए भी scanf( ) Function को तो समान
तरीके से ही use किया जाता है |
अंतर
केवल इतना होता है की scanf( ) Function में use
किए जाने वाले Control Strings को Simple
ही रखा जाता है |
चुंकि scanf(
) Function की एक विशेषता ये है की ये Function Blank Space से Terminate हो जाता है |
इसलिए
यदि हम किसी मान को Input करते समय space
या Entery Key द्वारा कई मानों को अलग – अलग
कर दे , तो Input किया गया मान scanf( ) Function में specify किए गए विभन्न variables में store हो जाते है |
No comments