Click here to Skip to main content
14,691,836 members
Please Sign up or sign in to vote.
3.00/5 (2 votes)
See more:
Hej there,
Iam just new in C# and for train I want to create a Console-Calculator. I just got a simple one that can 1+1 and 1-1 and so on but now i want a bigger one that observes the hmm is it called Dot to Dash rule in English? I don´t know sorry but an example ->

My simple Calculator is working like this ->

2+2*2 = 8

but i want him to work like ->

2+2*2 = 6

Hope you guys know what i mean ;)

So i thought it would be the best way to split up the calculation in numbers and sings.

This works allready but i don´t know what I should do right now to get the result of a calculation :X

Hope you guys can help me. Heres my Code that i wrote allready:

{
    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();
        }
    }
}


[Moved OP comment from answer]
Okay now i just want to go another way...

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();

}

But what now? Thought i have to get the result of this or smth. and denn calculate the next step in for example 5+6*7!?
Posted
Updated 22-Jan-20 1:33am
v2

You want to google for calculators: you need to implement an operator stack of some kind so you can use operator precedence.

Basically, you can't process operators Right-To-Left any more: you must recognise that "*" has a higher precedence than "+" and evaluate it first. Go, Google: there is a lot out there! :laugh:
   
Comments
fjdiewornncalwe 23-Feb-11 9:57am
   
Go - Go - Googlicious - Go
Hi,

what you want is a mathematical expression parser. Go and google for "mathematical expression parser c#" and you will find lots of information. Here are some links I found to be informative:
An extensible math expression parser with plug-ins[^]
http://www.c-sharpcorner.com/uploadfile/patricklundin/mathexpparser12062005062213am/mathexpparser.aspx[^]
http://muparser.sourceforge.net/[^]
   
Comments
Espen Harlinn 25-Feb-11 6:58am
   
Excellent advice, my 5

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900