Header Ads

ad728
  • New Updates

    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

    Post Top Ad

    ad728

    Post Bottom Ad

    ad728