Пример #1
0
        public IActionResult Get(string formula)
        {
            string stan = "ok";

            WebApi.RPNclass result = new WebApi.RPNclass(formula);
            //obiekt result ustawi ErrorLog na "Error"(+treść) w przypadku błędnego stringu zawierającego formułę
            if (result.ErrorLog[0] == 'E' && result.ErrorLog[1] == 'r' && result.ErrorLog[2] == 'r')
            {
                var data = new
                {
                    status  = "error",
                    message = result.ErrorLog
                };
                return(Ok(data));
            }
            else
            {
                var data = new
                {
                    status = stan,
                    infix  = result.InfixTokensArray,
                    rpn    = result.PostfixTokensArray
                };
                return(Ok(data));
            }
        }
Пример #2
0
        public IActionResult Get(string formula, string X)
        {
            string stan = "ok";
            double tmpDouble;

            WebApi.RPNclass result = new WebApi.RPNclass(formula);
            //ErrorLog będzie miał "Error" na początku stringa jeśli wystąpi problem
            if (result.ErrorLog[0] == 'E' && result.ErrorLog[1] == 'r' && result.ErrorLog[2] == 'r')
            {
                var data = new
                {
                    status  = "error",
                    message = result.ErrorLog
                };
                return(Ok(data));
            }
            //Sprawdzanie X, czy da się zparseować do double.
            else if (double.TryParse(X, out tmpDouble) != true)
            {
                var data = new
                {
                    status  = "error",
                    message = "Error: 'X' is not a valid double number or has not been set"
                };
                return(Ok(data));
            }
            else
            {
                string wynik = RPNclass.PostfixCalcSingleX(result.PostfixTokensArray, tmpDouble);
                //wynik zostanie zwrócony jako string - albo liczba/wynik albo error code w przypadku niedozwolonej operacji/wyjątku co należy zweryfikować
                if (double.TryParse(wynik, out tmpDouble) != true)
                {
                    var data = new
                    {
                        status  = "error",
                        message = wynik
                    };
                    return(Ok(data));
                }
                else
                {
                    var data = new
                    {
                        status = stan,
                        result = tmpDouble
                    };
                    return(Ok(data));
                }
            }
        }
Пример #3
0
        public IActionResult Get(string formula, string from, string to, string n)
        {
            double tmpDouble, tmpDouble2;
            int    tmpInt;

            WebApi.RPNclass wynik = new WebApi.RPNclass(formula);
            //sprawdzamy czy udało się rozbić na tokeny, jeśli nie to dlaczego
            if (wynik.ErrorLog[0] == 'E' && wynik.ErrorLog[1] == 'r' && wynik.ErrorLog[2] == 'r')
            {
                var data = new
                {
                    status  = "error",
                    message = wynik.ErrorLog
                };
                return(Ok(data));
            }
            //sprawdzanie liczb podanych przez url
            else if (double.TryParse(from, out tmpDouble) != true)
            {
                var data = new
                {
                    status  = "error",
                    message = "Error: 'from' is not a valid double number or has not been set"
                };
                return(Ok(data));
            }
            else if (double.TryParse(to, out tmpDouble2) != true)
            {
                var data = new
                {
                    status  = "error",
                    message = "Error: 'to' is not a valid double number or has not been set"
                };
                return(Ok(data));
            }
            else if (Int32.TryParse(n, out tmpInt) != true)
            {
                var data = new
                {
                    status  = "error",
                    message = "Error: 'n' is not a valid integer number or has not been set"
                };
                return(Ok(data));
            }
            else
            {
                //PostfixCalcMultiXCheck powie nam czy wystąpił błąd przy którymkolwiek z Xów podanych w zakresie
                bool flagaErr = false;
                flagaErr = RPNclass.PostfixCalcMultiXCheck(wynik.PostfixTokensArray, tmpDouble, tmpDouble2, tmpInt);
                //jeśli tak, zwracamy double X, string Y - który może być liczbą albo treścią błędu dla danego X
                //dane takie nadal mogą być użyte po odfiltrowaniu z nich wpisów z poza dziedziny X
                //zabezpieczenie przed próbą potraktowania np 2/X przy X=0 (2/0) jako liczbę rzeczywstą
                if (flagaErr)
                {
                    WynikError[] result = RPNclass.PostfixCalcMultiXWynikError(wynik.PostfixTokensArray, tmpDouble, tmpDouble2, tmpInt);
                    var          data   = new
                    {
                        status  = "error",
                        message = "Error: for some 'x', errors have occured",
                        result  = result
                    };
                    return(Ok(data));
                }
                else
                {
                    //jeśli jakiegokolwiek błędu nie stwierdzono, wyniki zwracane w postaci double X, double Y, gotowe do dalszego przetwarzania
                    Wynik[] result = RPNclass.PostfixCalcMultiXWynik(wynik.PostfixTokensArray, tmpDouble, tmpDouble2, tmpInt);
                    var     data   = new
                    {
                        status = "ok",
                        result = result
                    };
                    return(Ok(data));
                }
            }
        }