ধারণা
একটি প্রদত্ত স্ট্রিং সাংখ্যিক হলে এটি যাচাই করা উচিত।
ইনপুট − str ="12.5"
আউটপুট - সত্য
ইনপুট − str ="def"
আউটপুট - মিথ্যা
ইনপুট − str ="2e5"
আউটপুট - সত্য
ইনপুট − 10e4.4
আউটপুট - মিথ্যা
পদ্ধতি
আমাদের কোডে নিম্নলিখিত কেসগুলি পরিচালনা করতে হবে৷
৷-
আমাদের অগ্রণী এবং পিছনের সাদা স্থানগুলিকে উপেক্ষা করতে হবে৷
৷ -
আমাদের শুরুতে ‘+’, ‘-‘ এবং’.’ উপেক্ষা করতে হবে।
-
আমাদের নিশ্চিত করতে হবে যে স্ট্রিংয়ের অক্ষরগুলি {+, -, ., e, [0-9]}
-এর অন্তর্গত। -
আমাদের নিশ্চিত করতে হবে যে 'ই'-এর পরে কোনো '.' না আসে।
-
একটি অঙ্ক একটি বিন্দু অক্ষর অনুসরণ করা উচিত '.'.
-
আমাদের নিশ্চিত করতে হবে যে 'e' অক্ষরটি '+', '-', বা একটি অঙ্ক দ্বারা অনুসরণ করা উচিত।
উদাহরণ
ইনপুট নম্বর// একটি বৈধ নম্বর কিনা তা পরীক্ষা করার জন্য// 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