Beispiel #1
0
        public void Calculate()
        {
            for (var i = 0; i < FileSplit.Count(); i++)
            {
                var splitElementsOperation = FileSplit[i].Split(',', ' ');
                switch (splitElementsOperation[0])
                {
                case "var":
                    dicElements.Add(splitElementsOperation[1], double.Parse(splitElementsOperation[2]));
                    break;

                case "add":
                    dicElements[splitElementsOperation[1]] = MakeOperation(splitElementsOperation, "add");
                    break;

                case "div":
                    dicElements[splitElementsOperation[1]] = MakeOperation(splitElementsOperation, "div");
                    break;

                case "mul":
                    dicElements[splitElementsOperation[1]] = MakeOperation(splitElementsOperation, "mul");
                    break;

                case "sub":
                    dicElements[splitElementsOperation[1]] = MakeOperation(splitElementsOperation, "sub");
                    break;

                case "mov":
                    dicElements[splitElementsOperation[1]] = MakeOperation(splitElementsOperation, "mov");
                    break;
                }
            }
        }
Beispiel #2
0
        public string AddInFraction()
        {
            for (int i = 0; i < FileSplit.Count() - 1; i++)
            {
                var    splitedFirstPartFile = FileSplit[i].Split(' ', '\\').Where(s => s != String.Empty).ToArray <string>();
                var    splitedNextPartFile  = FileSplit[i + 1].Split(' ', '\\').Where(s => s != String.Empty).ToArray <string>();
                double firstDenumerator     = double.Parse(splitedFirstPartFile[2]);
                double adv             = firstDenumerator;
                double nextDenumerator = double.Parse(splitedNextPartFile[2]);
                if (splitedFirstPartFile[2] != splitedNextPartFile[2])
                {
                    splitedFirstPartFile[1] = (double.Parse(splitedFirstPartFile[1]) * nextDenumerator).ToString();
                    splitedNextPartFile[1]  = (double.Parse(splitedNextPartFile[1]) * firstDenumerator).ToString();
                    firstDenumerator       *= nextDenumerator;
                    nextDenumerator        *= adv;
                }
                var operation = FoundOperation(null);
                switch (operation)
                {
                case "+":
                    if (first == true)
                    {
                        Main       += double.Parse(splitedFirstPartFile[0]) + double.Parse(splitedNextPartFile[0]);
                        Numerator  += double.Parse(splitedFirstPartFile[1]) + double.Parse(splitedNextPartFile[1]);
                        Denumerator = nextDenumerator;
                        first       = false;
                    }
                    else
                    {
                        Main       += double.Parse(splitedNextPartFile[0]);
                        Numerator  += double.Parse(splitedNextPartFile[1]);
                        Denumerator = nextDenumerator;
                    }
                    break;

                case "-":
                    if (first == true)
                    {
                        Main       += double.Parse(splitedFirstPartFile[0]) - double.Parse(splitedNextPartFile[0]);
                        Numerator  += double.Parse(splitedFirstPartFile[1]) - double.Parse(splitedNextPartFile[1]);
                        Denumerator = nextDenumerator;
                        first       = false;
                    }
                    else
                    {
                        Main       -= double.Parse(splitedNextPartFile[0]);
                        Numerator  -= double.Parse(splitedNextPartFile[1]);
                        Denumerator = nextDenumerator;
                    }
                    break;

                case "*":
                    if (first == true)
                    {
                        Main       += double.Parse(splitedFirstPartFile[0]) * double.Parse(splitedNextPartFile[0]);
                        Numerator  += double.Parse(splitedFirstPartFile[1]) * double.Parse(splitedNextPartFile[1]);
                        Denumerator = nextDenumerator;
                        first       = false;
                    }
                    else
                    {
                        Main       *= double.Parse(splitedNextPartFile[0]);
                        Numerator  *= double.Parse(splitedNextPartFile[1]);
                        Denumerator = nextDenumerator;
                    }
                    break;

                case "/":
                    if (first == true)
                    {
                        Main       += double.Parse(splitedFirstPartFile[0]) / double.Parse(splitedNextPartFile[0]);
                        Numerator  += double.Parse(splitedFirstPartFile[1]) / double.Parse(splitedNextPartFile[1]);
                        Denumerator = nextDenumerator;
                        first       = false;
                    }
                    else
                    {
                        Main       /= double.Parse(splitedNextPartFile[0]);
                        Numerator  /= double.Parse(splitedNextPartFile[1]);
                        Denumerator = nextDenumerator;
                    }
                    break;

                default: break;
                }
            }
            return("Ответ без перевода: " + Main.ToString() + ' ' + Numerator.ToString() + '/' + Denumerator.ToString());
        }