Está en la página 1de 2

using System;

using System.Collections.Generic;

using System.Text;

namespace Calculadora{ class Calculadora #region " propiedades " // guarda el ultimo error reportado por algun metodo private string _error = ""; public string Error { get { return _error; } } // guarda el ultimo resultado que se computo con la calculadora private double _result = 0; public double Resultado { get { return _result; } } #endregion #region " metodos basicos, directos " public public public public double double double double Sumar(double a, double b) { Restar(double a, double b) { Multiplicar(double a, double b) { Dividir(double a, double b) { return return return return a a a a + * / b; b; b; b; } } } }

#endregion #region " metodos otros " public bool Evaluar(double a, double b, string operacion) { _error = ""; _result = 0; switch(operacion.ToLower()){ case "+": _result = Sumar(a, b); break; case "-": _result = Restar(a, b); break; case "*": _result = Multiplicar(a, b); break; case "/": if (b == 0){ _error = "Division entre cero no posible"; return false; } _result = Dividir(a, b); break; default: _error = "<operador> debe ser uno de los sig> [+-*/]"; return false; } return true; } public bool Evaluar(string operacion) { _error = ""; double a = 0; double b = 0; string[] valores = operacion.Split(' '); if (valores.Length != 3) { if (valores.Length == 2){ return ReEvaluar(operacion); }else{ _error = "La operacion debe ser de la sig> manera: <numero> <operador> <numero>"; return false; } } try{ a = Convert.ToDouble(valores[0]); }catch{ _error = "El primer numero no fue aceptado ["+valores[0]+"]"; return false; } try{ b = Convert.ToDouble(valores[2]); }catch{ _error = "El segundo numero no fue aceptado [" + valores[2] + "]"; return false; } return Evaluar(a, b, valores[1]); } private bool ReEvaluar(string operacion) { _error = ""; double a = 0; double b = 0; string[] valores = operacion.Split(' '); if (valores.Length != 2){ _error = "La operacion debe ser de la sig> manera: <operador> <numero>"; return false; } a = _result; try{ b = Convert.ToDouble(valores[1]); }catch{ _error = "El numero no fue aceptado [" + valores[1] + "]"; return false; } return Evaluar(a, b, valores[0]); } #endregion } }

using System; using System.Collections.Generic; using System.Text; namespace Calculadora{ class Program{ static void Main(string[] args){ ConsoleColor clr = Console.ForegroundColor; Console.Title = "calc[#]uladora"; Console.WriteLine("Bienvenido a calc#..."); Console.WriteLine(" Teclee operaciones con la sig> sintaxis: <numero> [+-*/] <numero>"); Calculadora calc = new Calculadora(); while (true) { Console.Write("> "); Console.ForegroundColor = ConsoleColor.Green; string operacion = Console.ReadLine(); if (operacion.ToLower() == "q") break; if (calc.Evaluar(operacion)){ Console.WriteLine("= " + calc.Resultado.ToString()); }else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(calc.Error); Console.ForegroundColor = clr; } Console.ForegroundColor = clr; Program.MensajeSalir(); } } static void MensajeSalir() { Console.WriteLine(" } } } ---- Teclee 'q'+[Enter] para salir... ----");

También podría gustarte