using System; using System.Collections.Generic; using System.Text;
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 double Sumar(double a, double b) { return a + b; }
  public double Restar(double a, double b) { return a - b; }
  public double Multiplicar(double a, double b) { return a * b; }
  public double Dividir(double a, double b) { return a / 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 = " 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: ";
  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: ";
  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
  }

programa de consola que usa la class Calculadora:

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: [+-*/] ");
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... ----");
}
}
}

Anuncios