Solved programming problem

Detect Integer,Variable,Float,Exponential and Character in C++.

Source code

1.Write a regular expression that would accept all the integer number.

Accept :  1, 11, 3455

Not Accept : 0 , 09

2.Write  a regular expression that would accept all the variables

Accept :  a_bhu, _ijk, w30ui_89ji

Not Accept : 0uiu, 1_dfef

3. Write  a regular expression that would accept all floating point number

Accept :  3.90, 1.0, .99, 0.99

Not accept :  1.

 4. Write a regular expression that would accept all the exponent number

Accept :  3.0E5,  34.67E+4,  2.98E-55

Not Accept : 3.0e+9, 0E5

5. Write a regular expression that would accept anything that start with character n and second character cannot be digit

Accept :  nabt, nw_98uio

Not Accept :  abf, n0anh

*/

Code:

#include <bits/stdc++.h>

using namespace std;

void integerNumber(string str)

{

    int len = str.size();

    if(len>0)

    {

        if(str[0]=='+' || str[0]=='-' || (str[0] >='1' && str[0]<='9'))

        {

            if((str[0]=='+' || str[0]=='-')  && str[1]=='0')

            {

                cout<<"a
Not Accepted
"<<endl;

                return;

            }

            for(int i=1; i<len; )

            {

                if(str[i] >='0' && str[i]<='9')

                {

                    i++;

                }

                else

                {

                    cout<<"a
Not Accepted
"<<endl;

                    return;

                }

            }

        }

        else

        {

            cout<<"a
Not Accepted
"<<endl;

            return;

        }

    }

    cout<<"
 Valid Integer 
"<<endl;

}

void variables(string str)

{

    int len = str.size();

    if(len>0)

    {

        if(str[0]=='_'  || (str[0] >='a' && str[0]<='z') || (str[0] >='A' && str[0]<='Z'))

        {

            for(int i=1; i<len; )

            {

                if(str[i]=='_' || (str[i] >='a' && str[i]<='z') || (str[i] >='A' && str[i]<='Z') || (str[i] >='0' && str[i]<='9'))

                {

                    i++;

                }

                else

                {

                    cout<<"a
Not Accepted
"<<endl;

                    return;

                }

            }

        }

        else

        {

            cout<<"a
Not Accepted
"<<endl;

            return;

        }

    }

    cout<<"
 Valid Variable 
"<<endl;

}

void floatingPoint(string str)

{

    int len = str.size();

    int count=0;

    if(len>0)

    {

        if(str[0]=='+' || str[0]=='-' || (str[0] >='0' && str[0]<='9') || str[0]=='.')

        {

            if(str[0]=='.' && 1==len)

            {

                cout<<"a
Not Accepted
"<<endl;

                return;

            }

            for(int i=1; i<len; )

            {

                if((str[i] >='0' && str[i]<='9') || str[i]=='.')

                {

                    if(str[i]=='.' && i+1==len)

                    {

                        cout<<"a
Not Accepted
"<<endl;

                        return;

                    }

                    if(str[i]=='.')

                    {

                        count++;

                    }

                    i++;

                }

                else

                {

                    cout<<"a
Not Accepted
"<<endl;

                    return;

                }

            }

            if(str[0]=='.')

            {

                count++;

            }

        }

        else

        {

            cout<<"a
Not Accepted
"<<endl;

            return;

        }

    }

    if(count ==1)

        cout<<"
 Valid Floating Point 
"<<endl;

    else

        cout<<"a
Not Accepted
"<<endl;

}

void  exponentNumber(string str)

{

    int len = str.size();

    int count=0,expo=0,afterE=0,sign=0,have=0;

    if(len>0)

    {

        if( (str[0] >='0' && str[0]<='9') || str[0]=='.')

        {

            for(int i=1; i<len; )

            {

                if(afterE==0)

                {

                    if((str[i] >='0' && str[i]<='9') || str[i]=='.' || str[i]=='E')

                    {

                        if(str[i]=='.' && i+1==len)

                        {

                            cout<<"a
Not Accepted1
"<<endl;

                            return;

                        }

                        if(str[i]=='E' && i>=2)

                        {

                            expo++;

                            afterE=1;

                        }

                        if(str[i]=='.')

                        {

                            count++;

                        }

                        i++;

                    }

                    else

                    {

                        cout<<"a
Not Accepted2
"<<endl;

                        return;

                    }

                }

                else

                {

                    if(str[i]=='.' || str[i]=='E' )

                    {

                        cout<<"a
Not Accepted3
"<<endl;

                        return;

                    }

                    if((str[i]=='+' || str[i]=='-') && str[i-1]=='E')

                    {

                        sign++;

                    }

                    if(str[i]=='+' || str[i]=='-')

                    {

                        have++;

                        if(i+1==len)

                        {

                           cout<<"a
Not Accepted3
"<<endl;

                        return;

                        }

                    }

                    if((str[i]>='0' && str[i]<='9') ||str[i]=='+' || str[i]=='-' )

                    {

                        i++;

                    }

                    else

                    {

                        cout<<"a
Not Accepted5
"<<endl;

                        return;

                    }

                }

            }

            if(str[0]=='.')

            {

                count++;

            }

        }

        else

        {

            cout<<"a
Not Accepted6
"<<endl;

            return;

        }

    }

    if(count ==1 && expo==1 && sign==have)

        cout<<"
 Valid Exponent Number 
"<<endl;

    else

        cout<<"a
Not Accepted7
"<<endl;

}

void  characterN(string str)

{

    int len  = str.size();

    if(len>1)

    {

        if(str[0]=='n' && !(str[1]>='0' && str[1]<='9'))

        {

            cout<<"
 Valid Character 
"<<endl;

            return;

        }

    }

    cout<<"a
Not Accepted
"<<endl;

}

void menu()

{

    string str;

    while(1)

    {

        cout<<"Menu
Press 1 to Check Integer
Press 2 to Check Variables
Press 3 to Check Floating Number
Press 4 to Check Exponent  Number
Press 5 to Check Character "<<endl;

        int choice;

        cout<<"Your Choice: ";

        cin>>choice;

        cin.ignore();

        if(choice==1)

        {

            cout<<"Enter Integer Number: ";

            getline(cin,str);

            integerNumber(str);

        }

        else if(choice==2)

        {

            cout<<"Enter Variable: ";

            getline(cin,str);

            variables(str);

        }

        else if(choice==3)

        {

            cout<<"Enter Floating Number: ";

            getline(cin,str);

            floatingPoint(str);

        }

        else if(choice==4)

        {

            cout<<"Enter  Exponent  Number: ";

            getline(cin,str);

            exponentNumber(str);

        }

        else if(choice == 5)

        {

            cout<<"Enter Character: ";

            getline(cin,str);

            characterN(str);

        }

        else

        {

            exit(0);

        }

    }

}

int main()

{

    menu();

    return 0;

}
Join the discussion

Add your comment