static Stack OperationDurchführen(Stack stack, Func<float, float, float> op)
 {
     var t1 = ZahlVomStack(stack);
     var t2 = ZahlVomStack(t1.Item1);
     // ACHTUNG: Zahlen liegen verkehrt herum auf dem Stack!
     var ergebnis = op(t2.Item2, t1.Item2);
     return ergebnis.Cons(t2.Item1);
 }
Beispiel #2
0
        static Stack OperationDurchführen(Stack stack, Func <float, float, float> op)
        {
            var t1 = ZahlVomStack(stack);
            var t2 = ZahlVomStack(t1.Item1);
            // ACHTUNG: Zahlen liegen verkehrt herum auf dem Stack!
            var ergebnis = op(t2.Item2, t1.Item2);

            return(ergebnis.Cons(t2.Item1));
        }
 static Stack EingabeVerarbeiten(Stack stack, string eingabe)
 {
     switch (eingabe)
     {
         case "+":
             return OperationDurchführen(stack, (a, b) => a + b);
         case "-":
             return OperationDurchführen(stack, (a, b) => a - b);
         case "*":
             return OperationDurchführen(stack, (a, b) => a * b);
         case "/":
             return OperationDurchführen(stack, (a, b) => a / b);
         default:
             return ZahlAufStack(stack, float.Parse(eingabe));
     }
 }
Beispiel #4
0
        static Stack EingabeVerarbeiten(Stack stack, string eingabe)
        {
            switch (eingabe)
            {
            case "+":
                return(OperationDurchführen(stack, (a, b) => a + b));

            case "-":
                return(OperationDurchführen(stack, (a, b) => a - b));

            case "*":
                return(OperationDurchführen(stack, (a, b) => a * b));

            case "/":
                return(OperationDurchführen(stack, (a, b) => a / b));

            default:
                return(ZahlAufStack(stack, float.Parse(eingabe)));
            }
        }
 static Tuple<Stack, float> ZahlVomStack(Stack stack)
 {
     return Tuple.Create(stack.Tail(), stack.Head());
 }
 static Stack ZahlAufStack(Stack stack, float zahl)
 {
     return zahl.Cons(stack);
 }
Beispiel #7
0
 static Stack ZahlAufStack(Stack stack, float zahl)
 {
     return(zahl.Cons(stack));
 }
Beispiel #8
0
 static Tuple <Stack, float> ZahlVomStack(Stack stack)
 {
     return(Tuple.Create(stack.Tail(), stack.Head()));
 }