कैसे जांचा जाए कि इनपुट एक नंबर c ++ है या नहीं


जवाब 1:

हैलो,

वैसे आप अपने कोड के इनपुट को एक स्ट्रिंग के रूप में ले कर एक पूर्णांक संख्या को मान्य कर सकते हैं।

फिर स्ट्रिंग के माध्यम से एक लूप चलाएं और प्रत्येक वर्ण की जांच करें कि क्या चरित्र एक अंक है या नहीं। आप इसे C ++ के बिल्ट-इन "isdigit ()" फ़ंक्शन का उपयोग करके कर सकते हैं जो बूलियन मान लौटाता है।

यदि आपको एक बार एक वर्ण मिलता है जो एक अंक नहीं है, तो पहले से घोषित ध्वज रखें और इसे बदल दें। तब यू लूप को तोड़ सकता है और कह सकता है कि इनपुट संख्यात्मक नहीं है, अन्यथा संख्यात्मक।

कोड:

#शामिल नेमस्पेस एसटीडी का उपयोग करना;मुख्य प्रवेश बिंदु(){int c = 0; //झंडा स्ट्रिंग एस; CIN >> है; for (int i = 0; मैं; { अगर (isdigit (s [i])) {c = 1; ब्रेक ;; } if (c == 1) cout << "संख्यात्मक नहीं" < और cout << "याप, न्यूमेरिक" < वापसी 0;}

उपरोक्त कोड केवल पूर्णांक संख्या को मान्य करने के लिए है। लेकिन फ्लोटिंग नंबर के लिए आप क्या करेंगे !!!

कोई चिंता नहीं, अगर आप उपरोक्त कोड को पूरी तरह से समझते हैं, तो आप "फ्लोटिंग" बटन को मान्य करने में थोड़े संशोधन के साथ समान कोड को आसानी से लागू कर सकते हैं :)

यदि आपको उपरोक्त कोड को हल करने में कोई भ्रम या समस्या है या फ़्लोटिंग संख्या को मान्य करने की समस्या का समाधान नहीं किया जा सकता है, तो कृपया मुझे सूचित करें :)

हैप्पी कोडिंग! : डी


जवाब 2:

संख्यात्मक इनपुट एक सटीक डोमेन नहीं है। आपको वास्तव में परिभाषित करना होगा कि आपका क्या मतलब है।

123 अंक है? कैसे -123? 123e10 के बारे में कैसे? 123.123 के बारे में कैसे? कैसा रहेगा -1234567890.123456789012345678901234567890e5? इन सभी को अलग-अलग डोमेन में संख्यात्मक माना जाता है, और प्रत्येक का सत्यापन अलग-अलग होता है।

सी / सी ++ में, उचित इनपुट सुनिश्चित करने का सबसे अच्छा तरीका है, सबसे पहले स्कैनफ या सिनेमा फ़ंक्शन का उपयोग करना है, जो इनपुट को प्रदान किए गए चर प्रकार से मेल खाने के लिए मजबूर करते हैं।

उसके बाद, यदि आपको आगे डोमेन सत्यापन की आवश्यकता है, तो आप इनपुट चर के आस-पास जोर डाल सकते हैं। उदाहरण के लिए, यदि संख्या 1000 से कम होने की आवश्यकता है, तो आप अभिकथन कर सकते हैं (इनपुट <1000) या यदि (इनपुट> = 1000) हैंडल_रोर ();


जवाब 3:

ASCII मूल्यों का उपयोग करें, निचला अंक '0' (ASCII 48) है और ऊपरी 9, (ASCII 57) है, लगातार, इसलिए प्रत्येक अंक को सही सीमा में होने की जांच करें ... सुरुचिपूर्ण नहीं है, लेकिन काम करता है और छोटा कोड है।

#शामिल #शामिल बूल is_digit (चार * c_array){ for (int k = 0; k if ((int) c_array [k] <(int) '0' || (int) c_array [k]> (int) '9') { विवरण झूठा है; } } सच लौटना;}मुख्य प्रवेश बिंदु(){ std :: string tmp; std :: cout << "संख्या: \ n"; std :: getline (std :: cin, tmp);अगर (is_digit (const_cast) (Tmp.c_str ()))) std :: cout << "true" << std :: endl; अन्य std :: cout << "झूठी" << std :: endl;}

जवाब 4:
C ++ में संख्यात्मक इनपुट को मान्य करने का सरल तरीका:1) IsDigit फ़ंक्शन का उपयोग करनाअगर (isdigit (पासवर्ड [i)) {cout << "\ n आपको धन्यवाद।" << एंडल; } // यह एक पूर्णांक याय है! अन्य { cout << "\ n आपके पास केवल एक संख्यात्मक लॉगिन हो सकता है" << endl; }

जवाब 5:

प्रश्न की व्याख्या 2 तरीकों से की जा सकती है।

  1. इनपुट के रूप में एक स्ट्रिंग है, पूरी तरह से रेगेक्स [0–9] + द्वारा उत्पन्न?
  2. क्या एक स्ट्रिंग के रूप में इनपुट को एक संख्या होने की कल्पना की जा सकती है?

"संख्यात्मक" की परिभाषा अलग है।

कृपया पता लगाएँ कि क्या [1,2] आप चाहते हैं ... और फिर प्रतिक्रियाएँ अलग होंगी।