Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- using namespace std;
- // Sign = + | -
- bool isSign(const char* number, unsigned int& ptr)
- {
- if (number[ptr] == '+' || number[ptr] == '-' )
- {
- ++ptr;
- return true;
- }
- return false;
- }
- //isDigit = 0 | 1 | 2 | 3 | 4 | 5 | 6 |7 | 8 | 9
- bool isDigit(const char* number, unsigned int& ptr)
- {
- if (number[ptr] >= '0' && number[ptr] <= '9')
- {
- ++ptr;
- return true;
- }
- return false;
- }
- //unsigned number = <Digit> | <Digit> <unsigned number>
- bool unsigned_number(const char* number, unsigned int& ptr)
- {
- if (!isDigit(number, ptr))
- return false;
- return unsigned_number(number, ptr);
- }
- //order = E <Sign> <unsigned number>
- bool order(const char* number, unsigned int& ptr)
- {
- if (number[ptr - 1] == '.' || number[ptr] != 'E' || !isSign(number, ++ptr) || number[ptr] == '\0' )
- return false;
- unsigned_number(number, ptr);
- if (number[ptr] == '\0')
- return true;
- return false;
- }
- //mantiss = <unsigned_number>.<unsigned number> | <unsigned_number>
- bool mantiss(const char* number, unsigned int& ptr)
- {
- if (!unsigned_number(number, ptr) && number[ptr] == '.' && ptr!=0)
- return !(unsigned_number(number, ++ptr));
- return true;
- }
- //<isReal> ::= <matiss> <order> || <sign> <mantis> <order>
- bool isReal(const char* number, unsigned int ptr = 0) // n
- {
- if (mantiss(number, ptr) && order(number, ptr) && *number != '\0')
- return true;
- else if (isSign(number, ptr) && mantiss(number, ptr) && order(number, ptr) && *number != '\0')
- return true;
- else
- return false;
- }
- const char* FLIE_NOT_OPEN = "Could not open file!";
- int main()
- {
- try
- {
- fstream fin;
- string path = "input.txt";
- fin.open(path, fstream::in);
- if (!fin.is_open()) throw FLIE_NOT_OPEN;
- char* num = new char[255];
- fin >> num;
- cout << ((isReal(num)) ? "true" : "false") << endl;
- fin.close();
- delete[] num;
- return 0;
- }
- catch (const char* err)
- {
- cerr << endl << err << endl;
- return -1;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement