Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Rabotqt i dvata testa v hacker rank - https://www.hackerrank.com/contests/fourth-interuniversity-nbu-programming-contest/challenges/challenge-1894
- // tochki ot 100 - ???
- #include <iostream>
- #include <string>
- #include <cstdlib>
- #include <sstream> // std::stringstream
- using namespace std;
- #define ADDITION 1
- #define SUBSTRACTION 2
- #define MULTIPLICATION 3
- #define DIVISION 4
- int state = 0;
- int signPosition =0;
- int equalSignPosition = 1;
- long sstoi(const char *s) // custom stoi function
- {
- long i;
- i = 0;
- while(*s >= '0' && *s <= '9')
- {
- i = i * 10 + (*s - '0');
- s++;
- }
- return i;
- }
- int getFirstNumber(string input, int signPos)
- {
- string newString = input.substr(0,signPos);
- int firstNum = sstoi(newString.c_str());
- return firstNum;
- cout << "Return first num: " << firstNum << endl;
- }
- int getSecondNumber(string input, int signPos)
- {
- string newString = input.substr(signPos+1, equalSignPosition-signPosition-1);
- int secondNum = sstoi(newString.c_str());
- return secondNum;
- }
- int getThirdNumber(string input, int equalSignPos)
- {
- string newString = input.substr(equalSignPos+1);
- int thirdNumber = sstoi(newString.c_str());
- return thirdNumber;
- }
- double solve(double firstNum, double secondNum, double thirdNum)
- {
- double trueOrNot = 0;
- switch(state)
- {
- case ADDITION:
- if(firstNum+secondNum==thirdNum)
- trueOrNot = 1;
- break;
- case SUBSTRACTION:
- if(firstNum-secondNum==thirdNum)
- trueOrNot =1;
- break;
- case MULTIPLICATION:
- if(firstNum*secondNum==thirdNum)
- trueOrNot = 1;
- break;
- case DIVISION:
- if(firstNum/secondNum==thirdNum)
- trueOrNot =1;
- break;
- }
- return trueOrNot;
- }
- int main() {
- string input;
- string word;
- while(getline(cin, input)){
- // cin.ignore();
- if(input.empty())
- break;
- equalSignPosition = input.find('=');
- if(input.find('+')!=-1)
- {
- state = ADDITION;
- signPosition = input.find('+');
- }
- if(input.find('-')!=-1)
- {
- state = SUBSTRACTION;
- signPosition = input.find('-');
- }
- if(input.find('x')!=-1)
- {
- state = MULTIPLICATION;
- signPosition = input.find('x');
- }
- if(input.find(':')!=-1)
- {
- signPosition = input.find(':');
- state = DIVISION;
- }
- int firstNum = getFirstNumber(input, signPosition);
- int secondNum = getSecondNumber(input,signPosition);
- int thirdNumber = getThirdNumber(input,equalSignPosition);
- double result = solve(firstNum,secondNum,thirdNumber);
- if(result)
- cout <<"Correct" << endl;
- else
- cout <<"Incorrect" << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement