अवधारणा
यदि दी गई स्ट्रिंग संख्यात्मक है तो इसे सत्यापित किया जाना चाहिए।
इनपुट - str ="12.5"
आउटपुट - सच
इनपुट - str ="डीफ़"
आउटपुट - झूठा
इनपुट - str ="2e5"
आउटपुट - सच
इनपुट -10e4.4
आउटपुट - झूठा
विधि
हमें कोड में निम्नलिखित मामलों को संभालना है।
-
हमें प्रमुख और पिछली सफेद जगहों को अनदेखा करना होगा।
-
हमें शुरुआत में '+', '-' और '।' को अनदेखा करना होगा।
-
हमें यह सुनिश्चित करना है कि स्ट्रिंग में वर्ण {+, -, ., e, [0-9]}
से संबंधित हैं। -
हमें यह सुनिश्चित करना होगा कि 'ई' के बाद कोई '.' न आए।
-
एक अंक को एक बिंदु वर्ण '.' का पालन करना चाहिए।
-
हमें यह सुनिश्चित करना होगा कि वर्ण 'ई' के बाद '+', '-', या एक अंक होना चाहिए।
उदाहरण
// C++ program to check if input number // is a valid number #include <bits/stdc++.h> #include <iostream> using namespace std; int valid_number1(string str1){ int i = 0, j = str1.length() - 1; while (i < str1.length() && str1[i] == ' ') i++; while (j >= 0 && str1[j] == ' ') j--; if (i > j) return 0; if (i == j && !(str1[i] >= '0' && str1[i] <= '9')) return 0; if (str1[i] != '.' && str1[i] != '+' && str1[i] != '-' && !(str1[i] >= '0' && str1[i] <= '9')) return 0; bool flagDotOrE = false; for (i; i <= j; i++) { // If any of the char does not belong to // {digit, +, -, ., e} if (str1[i] != 'e' && str1[i] != '.' && str1[i] != '+' && str1[i] != '-' && !(str1[i] >= '0' && str1[i] <= '9')) return 0; if (str1[i] == '.') { if (flagDotOrE == true) return 0; if (i + 1 > str1.length()) return 0; if (!(str1[i + 1] >= '0' && str1[i + 1] <= '9')) return 0; } else if (str1[i] == 'e') { flagDotOrE = true; if (!(str1[i - 1] >= '0' && str1[i - 1] <= '9')) return 0; if (i + 1 > str1.length()) return 0; if (str1[i + 1] != '+' && str1[i + 1] != '-' && (str1[i + 1] >= '0' && str1[i] <= '9')) return 0; } } return 1; } // Driver code int main(){ char str1[] = "0.1e10"; if (valid_number1(str1)) cout << "true"; else cout << "false"; return 0; }
आउटपुट
true