Calculadora - I






using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Calculadora
{
  public partial class Form1 : Form
  {
    private enum Entrada
    {
      NINGUNA,
      DIGITO,
      OPERADOR,
      CE
    }

    private Entrada ultimaEntrada;
    private bool comaDecimal;
    private char operador;
    private byte numOperandos;
    private double operando1;
    private double operando2;

    public Form1()
    {
      InitializeComponent();
      ultimaEntrada = Entrada.NINGUNA;
      comaDecimal = false;
      operador = '\0';
      numOperandos = 0;
      operando1 = 0;
      operando2 = 0;
    }

       // A cada uno de los botones del 0 al 9 se les ha asignado un controlador de eventos
      // en la ventana de propiedades seleccionamos el evento Click y asignamos al controlador
      // al nombre btDigito_Click

    private void btDigito_Click(object sender, EventArgs e)
    {
      Button objButton = (Button)sender;

      if (ultimaEntrada != Entrada.DIGITO)
      {
        if (objButton.Text == "0") return;
        etPantalla.Text = "";
        ultimaEntrada = Entrada.DIGITO;
        comaDecimal = false;
      }
      etPantalla.Text += objButton.Text;
    }

    private void btComaDec_Click(object sender, EventArgs e)
    {
      if (ultimaEntrada != Entrada.DIGITO)
      {
        etPantalla.Text = "0,";
        ultimaEntrada = Entrada.DIGITO;
      }
      else if (comaDecimal == false)
        etPantalla.Text = etPantalla.Text + ",";

      comaDecimal = true;
    }




    private void btOperacion_Click(object sender, EventArgs e)
    {
      // Obtener el id del botón que generó el evento

      Button objButton = (Button)sender;

      // Obtener el texto del botón pulsado

      string textoBoton = objButton.Text;

      if ((numOperandos == 0) && (textoBoton[0] == '-'))
        ultimaEntrada = Entrada.DIGITO;

      if (ultimaEntrada == Entrada.DIGITO)
        numOperandos += 1;

      if (numOperandos == 1)
        operando1 = double.Parse(etPantalla.Text);
      else if (numOperandos == 2)
      {
        operando2 = double.Parse(etPantalla.Text);
        switch (operador)
        {
          case '+':
            operando1 += operando2;
            break;
          case '-':
            operando1 -= operando2;
            break;
          case 'x':
            operando1 *= operando2;
            break;
          case '/':
            operando1 /= operando2;
            break;
          case '=':
            operando1 = operando2;
            break;
        }

        // Visualizar el resultado

        etPantalla.Text = operando1.ToString();
        numOperandos = 1;
      }
      operador = textoBoton[0]; // carácter de la posición 0
      ultimaEntrada = Entrada.OPERADOR;
    }

    private void btTantoPorCiento_Click(object sender, EventArgs e)
    {
      double resultado;

      if (ultimaEntrada == Entrada.DIGITO)
      {
        resultado = operando1 * double.Parse(etPantalla.Text) / 100;

        // Visualizar el resultado

        etPantalla.Text = resultado.ToString();

        // Simular que se ha hecho clic en "="

        btIgual.PerformClick();

        // Enfocar la tecla %

        btTantoPorCiento.Focus();
      }
    }

    private void btIniciar_Click(object sender, EventArgs e)
    {
      etPantalla.Text = "0,";
      ultimaEntrada = Entrada.NINGUNA;
      comaDecimal = false;
      operador = '\0';
      numOperandos = 0;
      operando1 = 0;
      operando2 = 0;
    }

    private void btBorrarEntrada_Click(object sender, EventArgs e)
    {
      etPantalla.Text = "0,";
      ultimaEntrada = Entrada.CE;
      comaDecimal = false;
    }
  }
}

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.