i dont know why no one want to answer this question right for me?

+1 Mahmoud Abdel Ghani · February 3, 2015
actually i made a calculator using class and functions,i created class and inside it functions...function for get numbers and function for summation..etc..okay...now the user made some operation and he want to make another operation with last result..like 1+1=2..and i want to make another operation by using the last result like...2+3=5....so how to return the answer to continue??

Post a Reply

Replies

- page 2
Oldest  Newest  Rating
0 Branislav Lazic · February 8, 2015
Forget it! Here is new solution. Dynamic one!


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSPlayground
{
    class Calculator
    {
        // Declare a delegate that takes two values, does something with them
        // and returns "int" result
        private delegate int Operation(int startValue, int arg);

        /**Calculate method takes array of int's and applies Operation delegate.
         * As you can see, we take argument at "0" position in "args" array and declare
         * it as a start value. Thus "for" loop will start from "1" and not from "0". 
         * For each operation we want to conduct, we will use "Calculate" method
         * with different expression. Perfect example of how to reuse your method.**/
        private int Calculate(int[] args, Operation o)
        {
            int startValue = args[0];

            for (int i = 1; i < args.Length; i++)
            {
                startValue = o(startValue, args[i]);
            }
            return startValue;

        }

        public int Add(int[] args)
        {
            /**Example of use:
             * We pass "int" array and lambda expression. "init" value will be value at
             * "0" position of "args" int array. Then we cycle through array and add
             * next value from "args" array. Our "init" value mutates. In the end, it will
             * produce final result**/
            return Calculate(args, (init, next) => init += next);
        }

        public int Substract(int[] args)
        {
            return Calculate(args, (init, next) => init -= next);
        }

        public int Multiply(int[] args)
        {
            return Calculate(args, (init, next) => init *= next);
        }

        /**This is a bit specific case. We will have to check whether our "next" value
         * will be "0".**/
        public int Divide(int[] args)
        {
            return Calculate(args, (init, next) =>
            {
                if (next != 0)
                {
                    return init /= next;
                }
                else
                {
                    Console.WriteLine("Infinite!");
                    return 0;
                }
            });
        }

        public int[] GetValues(string stopKey)
        {
            Console.WriteLine("Insert your values");
            List vals = new List();
            bool condition = true;
            while (condition)
            {
                string input = Console.ReadLine();
                if (input == stopKey)
                {
                    break;
                }
                else
                {
                    int num;
                    try
                    {
                        if (int.TryParse(input, out num))
                        {
                            vals.Add(num);
                        }
                    }
                    catch (FormatException fe)
                    {
                        Console.WriteLine("Not a numeric value!");
                    }

                }
               
            }
            
            return vals.ToArray();
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            Calculator calc = new Calculator();
            
            Console.Write("Select the operation that you to do(+,-,/,*):");
            string choice = Console.ReadLine();
            // I don't care how you are going to get this numbers
            //int[] nums = new int[] { 10, 2, 3 };

            int [] nums = calc.GetValues("x");

            switch (choice)
            {
                case "+":
                    int resOfAddition = calc.Add(nums);
                    Console.WriteLine("Answer = " + resOfAddition);
                    break;

                case "-":
                    int resultOfSubstraction = calc.Substract(nums);
                    Console.WriteLine("Answer = " + resultOfSubstraction);
                    break;

                case "*":
                    int resOfMultiplication = calc.Multiply(nums);
                    Console.WriteLine("Answer = " + resOfMultiplication);
                    break;
                case "/":
                    int resOfDivision = calc.Divide(nums);
                    Console.WriteLine("Answer = " + resOfDivision);
                    break;
            }

            Console.ReadLine();
        }
    }
}
0 Abdullah Nauman · February 8, 2015
could i please have the build error. 
0 Mahmoud Abdel Ghani · February 9, 2015
@Branislav Lazic

it doesnt work bro it runs and ask me which operation you want and i choiced the operation and and ask me to insert the values and after it didnt do anything
0 Branislav Lazic · February 9, 2015
Press "x" to stop inserting numbers.
0 Gabriel Piriz · February 9, 2015
Here's another solution. Didn't do anything complex, and it's not the best one you could make.

(Made it in NotePad++ might have some mistakes at compiling or running time)


//this is the class and his functions

 class Calculator
    {
        float numb1;
        float numb2;
        float answer;
float lastAnswer = 0;
        bool test1 = true;
        bool test2 = true;
        string first_input;
        string second_input;
        public void initalization(float x, float y, ref float ans)
        {
            numb1 = x;
            numb2 = y;
            answer = ans;
        }
        public void getnumbers()
        {
            while (test1)
            {
                Console.Writeln("Please Enter first Number or ANS to use the last Result: ");
Console.Writeln("Last Result Value: " + lastAnswer);
                first_input = Console.ReadLine();
                if (true == float.TryParse(first_input, out numb1))
                {
                    test1 = false;
                }
                else if (first_input = "ANS")
{
test1 = false;
numb1 = lastAnswer;

}
else
                {
                    test1 = true;
                    Console.WriteLine("Error!-->please enter something numeric");

                }
            }
            while (test2)
            {
                Console.Writeln("Please Enter Second number or ANS to use the last Result: ");
Console.Writeln("Last Result Value: " + lastAnswer);
                second_input = Console.ReadLine();
                if (true == float.TryParse(second_input, out numb2))
                {
                    test2 = false;
                }
else if (second_input = "ANS")
{
test2 = false;
numb2 = lastAnswer;
}
                else
                {
                    test2 = true;
                    Console.WriteLine("Error!-->please enter something numeric");

                }
            }
        }
        public float sum()
        {

            answer = numb1 + numb2;
            Console.WriteLine("Answer = " + answer);
            return answer;
        }
        public float subtract()
        {

            answer = numb1 - numb2;
            Console.WriteLine("Answer = " + answer);
            return answer;


        }
        public float divide()
        {

            if (numb2 == 0)
            {
                Console.WriteLine("You cannot divide by 0 answer is infinity");
            }
            else
            {
                answer = numb1 / numb2;
                Console.WriteLine("Answer = " + answer);
            }


            return answer;



        }
        public float multiply()
        {

            answer = numb1 * numb2;
            Console.WriteLine("Answer = " + answer);
            return answer;
        }


    }

//this is the main................................................

  static void Main(string[] args)
        {
            string choice;
            char con = 'y';
            
            string continueornot;
            bool testcontinue = true;

Calculator calculator = new Calculator();

            while (con == 'y')
            {             
                Console.Write("Select the operation that you to do(+,-,/,*):");
                choice = Console.ReadLine();
                
                switch (choice)
                {
                    case "+":

                        calculator.getnumbers();
                        calculator.sum();
calculator.lastAnswer = calculator.ans;
                        break;
                    case "-":

                        calculator.getnumbers();
                        calculator.subtract();
calculator.lastAnswer = calculator.ans;
                        break;

                    case "/":
                        
                        calculator.getnumbers();
                        calculator.divide();
                        calculator.lastAnswer = calculator.ans;
break;
                    case "*":
                        
                        calculator.getnumbers();
                        calculator.multiply();
                        calculator.lastAnswer = calculator.ans;
break;
                    default:
                        Console.WriteLine("Error!-->please select one of shown operation!");
                        break;
                }
                while (testcontinue)
                {
                    Console.WriteLine("Press y to continue or anykey to exit");
                    continueornot = Console.ReadLine();
                    if (char.TryParse(continueornot, out con))
                    {
                        testcontinue = false;
                    }
                    else
                    {
                        testcontinue = true;
                        Console.WriteLine("Not Allowed!!! ");
                    }
                }
            }
        }
0 Mahmoud Abdel Ghani · February 9, 2015
@Gabriel Piriz 

bro in main you try to access a variable from class and this isnt allowed??? unerstand?
0 Gabriel Piriz · February 9, 2015

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Project1
{
    //this is the class and his functions

    class Calculator
    {
        float numb1;
        float numb2;
        public float answer;
        public float lastAnswer = 0;
        bool test1 = true;
        bool test2 = true;
        string first_input;
        string second_input;
        public void initalization(float x, float y, ref float ans)
        {
            numb1 = x;
            numb2 = y;
            answer = ans;
        }
        public void getnumbers()
        {
            while (test1)
            {
                Console.WriteLine("Please Enter first Number or ANS to use the last Result: ");
                Console.WriteLine("Last Result Value: " + lastAnswer);
                first_input = Console.ReadLine();
                if (true == float.TryParse(first_input, out numb1))
                {
                    test1 = false;
                }
                else if (first_input.Equals("ANS"))
                {
                    test1 = false;
                    numb1 = lastAnswer;

                }
                else
                {
                    test1 = true;
                    Console.WriteLine("Error!-->please enter something numeric");

                }
            }
            while (test2)
            {
                Console.WriteLine("Please Enter Second number or ANS to use the last Result: ");
                Console.WriteLine("Last Result Value: " + lastAnswer);
                second_input = Console.ReadLine();
                if (true == float.TryParse(second_input, out numb2))
                {
                    test2 = false;
                }
                else if (second_input.Equals("ANS"))
                {
                    test2 = false;
                    numb2 = lastAnswer;
                }
                else
                {
                    test2 = true;
                    Console.WriteLine("Error!-->please enter something numeric");

                }
            }

            test1 = test2 = true;
        }
        public float sum()
        {

            answer = numb1 + numb2;
            Console.WriteLine("Answer = " + answer);
            return answer;
        }
        public float subtract()
        {

            answer = numb1 - numb2;
            Console.WriteLine("Answer = " + answer);
            return answer;


        }
        public float divide()
        {

            if (numb2 == 0)
            {
                Console.WriteLine("You cannot divide by 0 answer is infinity");
            }
            else
            {
                answer = numb1 / numb2;
                Console.WriteLine("Answer = " + answer);
            }


            return answer;



        }
        public float multiply()
        {

            answer = numb1 * numb2;
            Console.WriteLine("Answer = " + answer);
            return answer;
        }


    }

    //this is the main................................................
    class StupidThing
    {
        static void Main(string[] args)
        {
            string choice;
            char con = 'y';

            string continueornot;
            bool testcontinue = true;

            Calculator calculator = new Calculator();

            while (con == 'y')
            {
                Console.Write("Select the operation that you to do(+,-,/,*):");
                choice = Console.ReadLine();

                switch (choice)
                {
                    case "+":

                        calculator.getnumbers();
                        calculator.sum();
                        calculator.lastAnswer = calculator.answer;
                        Console.WriteLine("Sumar");
                        break;
                    case "-":

                        calculator.getnumbers();
                        calculator.subtract();
                        calculator.lastAnswer = calculator.answer;
                        break;

                    case "/":

                        calculator.getnumbers();
                        calculator.divide();
                        calculator.lastAnswer = calculator.answer;
                        break;
                    case "*":

                        calculator.getnumbers();
                        calculator.multiply();
                        calculator.lastAnswer = calculator.answer;
                        break;
                    default:
                        Console.WriteLine("Error!-->please select one of shown operation!");
                        break;
                }
                while (testcontinue)
                {
                    Console.WriteLine("Press y to continue or anykey to exit");
                    continueornot = Console.ReadLine();
                    if (char.TryParse(continueornot, out con))
                    {
                        testcontinue = false;
                    }
                    else
                    {
                        testcontinue = true;
                        Console.WriteLine("Not Allowed!!! ");
                    }
                }
            }
        }
    }
}
0 Mahmoud Abdel Ghani · February 10, 2015
@Gabriel Piriz


it works good bro and thanks a lot
for your attention
0 Gabriel Marius Popescu · February 23, 2015
@Mahmoud Abdel Ghani
Here is the code you wanted! The user can choose his / her numbers. Enjoy!


Console.WriteLine("Select the numbers you want to " + choice);
            
            int num1 = Convert.ToInt32(Console.ReadLine());
            int num2 = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine(" First number is " + num1 + " and second number is " + num2);
            
            int[] nums = new int[] { num1, num2 };
  • 1
  • 2

C#

106,972 followers
About

C# is an object-oriented language designed for improving the development of web applications.

Links
Moderators