Member 7697917 Ответов: 2

Калькулятор на языке C# с разделенными строками


Hej и есть,
Я просто новичок в C# и для train хочу создать консоль-калькулятор. Я только что получил простой, который может 1+1 и 1-1 и так далее, но теперь я хочу более крупный, который соблюдает правило хм, называется ли оно Dot to Dash на английском языке? Я не знаю, извините, но пример ->

Мой простой калькулятор работает так ->

2+2*2 = 8

но я хочу, чтобы он работал, как ... ;

2+2*2 = 6

Надеюсь, вы, ребята, понимаете, что я имею в виду ;)

Так что я все жеэто был бы лучший способ разделить расчет на числа и пения.

Это уже работает, но я не знаю, что мне делать прямо сейчас, чтобы получить результат вычисления :X

Надеюсь, вы, ребята, сможете мне помочь. Вот мой код, который я уже написал:

{
    public static void Main()
    {
        int count = 0;

        Console.WriteLine("Insert your Calculation");
        string calculation = Console.ReadLine();
        string[] splitnumbers = calculation.Split(new Char[] { '+', '-', '*', '/' });
        string[] splitsigns = calculation.Split(new Char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' });
        foreach (string s in splitnumbers)
        {
            count++;
            if (s.Trim() != "")
                Console.WriteLine(s);
            Console.WriteLine(splitsigns[count]);

            Console.WriteLine("For exit press Enter");
            Console.Read();
        }
    }
}


[Перенесен комментарий OP из ответа]
Ладно, теперь я просто хочу пойти другим путем...

for (int i = 0; i < splitnumbers.Length - 1; i++)
{
    int firstNumber = int.Parse(splitnumbers[i].ToString());
    int secondNumber = int.Parse(splitnumbers[i + 1].ToString());
    string operatorString = splitsigns[i + 1].ToString();

}

Но что теперь? Думал, что я должен получить результат этого или еще чего-то. а Дэнн вычислит следующий шаг в например 5+6*7!?

2 Ответов

Рейтинг:
19

OriginalGriff

Вы хотите поискать в google калькуляторы: вам нужно реализовать какой-то стек операторов, чтобы вы могли использовать приоритет операторов.

В принципе, вы больше не можете обрабатывать операторы справа налево: вы должны признать, что "*" имеет более высокий приоритет, чем"+", и сначала оценить его. Иди, Гугл: там очень много всего есть! :смеяться:


fjdiewornncalwe

Гоу - Гоу - Googlicious - Го

Рейтинг:
10

JF2015

Привет,

то, что вам нужно, - это математический анализатор выражений. Зайдите в google и найдите "математический анализатор выражений c#", и вы найдете много информации. Вот некоторые ссылки, которые я нашел информативными:
Расширяемый анализатор математических выражений с подключаемыми модулями[^]
http://www.c-sharpcorner.com/uploadfile/patricklundin/mathexpparser12062005062213am/mathexpparser.aspx[^]
http://muparser.sourceforge.net/[^]


Espen Harlinn

Отличный совет, мой 5-й