calculadora macrotipo

27
MANUAL DE INSTRUCCIONES DE LA CALCULADORA “FNI CALCULATOR” CARACTERÍSTICAS Esta calculadora realiza operaciones básicas, con la característica de poder almacenar hasta tres cadenas de números, además puede ingresar los datos por teclado y por ratón sin que este afecte los cálculos que se realiza UBICACIÓN DE LAS TECLAS Y PANTALLAS: Dispone de 5 filas de teclas y 5 columnas. En la primera fila empezando por la izquierda se encuentran: paréntesis abierto(( ), paréntesis cerrado( )), botón de borrado. En la segunda fila las teclas de los números 7, 8,9 división y botón de retroceso () En la tercera fila las teclas 4, 5,6, multiplicación, memoria En la cuarta fila las tecas 1, 2,3, resta recuperación de memoria En la quinta fila las teclas de punto 0(cero) igual, suma,+/- Esta calculadora está compuesta por dos pantallas: 1.- la pantalla superior es para introducción de datos u operaciones que el usuario quiere 1

Upload: amilcar97

Post on 23-Sep-2015

272 views

Category:

Documents


0 download

DESCRIPTION

es un manuel de una calculadora echa en visual estudio

TRANSCRIPT

MANUAL DE INSTRUCCIONES DE LA CALCULADORA PARLANTE

MANUAL DE INSTRUCCIONES DE LA CALCULADORA FNI CALCULATORCARACTERSTICAS

Esta calculadora realiza operaciones bsicas, con la caracterstica de poder almacenar hasta tres cadenas de nmeros, adems puede ingresar los datos por teclado y por ratn sin que este afecte los clculos que se realizaUBICACIN DE LAS TECLAS Y PANTALLAS:

Dispone de 5 filas de teclas y 5 columnas. En la primera fila empezando por la izquierda se encuentran: parntesis abierto(( ), parntesis cerrado( )), botn de borrado.

En la segunda fila las teclas de los nmeros 7, 8,9 divisin y botn de retroceso (()En la tercera fila las teclas 4, 5,6, multiplicacin, memoriaEn la cuarta fila las tecas 1, 2,3, resta recuperacin de memoriaEn la quinta fila las teclas de punto 0(cero) igual, suma,+/- Esta calculadora est compuesta por dos pantallas:

1.- la pantalla superior es para introduccin de datos u operaciones que el usuario quiere realizar, el cual se puede modificar con el teclado y el ratn

2.- la segunda pantalla es para mostrar el resultado que se realiza en la pantalla superior, pero ese no puede ser modificado ni por el ratn y teclado.FUNCIN CALCULADORA

1-Para ponerla en funcin calculadora: presione el programa en su estado de ejecutable.

2- para cerrar la calculadora solo haga click en el botn con una cruz que se encuentra en la parte superior derecha de la aplicacin ya abierta CLCULOS

RESULTADOS DEL CLCULO

Para realizar los clculos puede hacerlo de dos maneras:

1.- introduzca directamente los nmeros y las operaciones deseadas con el ratn o teclado y luego la tecla de igual (=), pero ojo cuando introduzca operaciones como cadena de operadores puede que los clculos no sean los que est buscando

2.- para que los clculos puedan realizarse de manera ms precisa se debe utilizar los parntesis de apertura y de cerrado, dentro de los parntesis introducir las operaciones correspondientes. Por ejemplo (52+68)/(25*2) = 2,4 pero no es lo mismo si coloca sin los parntesis ejemplo 52+68/25*2=57,4 esto ocurre porque existe jerarqua de operadores CORRECCIN DE NMEROS/CIFRAS QUE NO SE HAN INTRODUCIDO CORRECTAMENTE

Si ha introducido un nmero equivocado, pulse la tecla de retroceso (() una vez. A continuacin introduzca el nmero correcto y siga calculando. Por ejemplo, si teclea 7x2 2 +5 y desea colocar 7x2 2 +2, el teclado de retroceso le ayudara a borrar solo el ltimo digito, pero si desea borrarlo toda la cadena solo presione la tecla de BORRAR una vez y se borrara toda la pantalla .

SMBOLOS DE ERROR EN LA PANTALLA

(Error de sintaxis) aparecer en la pantalla cuando:

1.- Ingrese operadores repetidos de manera seguida por ejemplo 56*5++2.- intente introducir un smbolo de operacin despus de tener el resultado(Error matemtico) aparecer en la pantalla cuando:1.- quiera dividir un nmero entre cero

Para eliminar el error pero mantener lo que aparece en pantalla, pulse la tecla BORRAR una vez. CLCULOS CON MEMORIA Para almacenar la cadena de nmeros, debe primero introducir la operacin deseada, luego presionar la tecla MEM una sola vez, si presiona dos veces se almacenara la misma cadena dos veces, la memoria almacena hasta tres cadenas, si quiere almacenar una cuarta, la primera cadena que se memorizo se borrara.Para recuperar las cadenas almacenadas debe presionar la tecla MC para recuperar la ltima cadena guardada, para recuperar la segunda cadena almacenada debe de presionar dos veces la tecla MC y si quiere recuperar la tercera cadena almacenada debe presionar tres veces la tecla MC.BOTON +/-

Cuando realice clculos y desea realizar un cambio de signo, debe primero realizar el clculo que desea, una vez obtenido el resultado deseado, presiona la tecla +/- y se cambiara de signo al resultado finalCODIGO DE LA CALCULADORA FNI CALCULATORusing System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Calculadora_FNI

{

public partial class Calculadora : Form {

bool Inicio = true;

int c = 0;

Funciones f = new Funciones();

public Calculadora()

{

InitializeComponent();

}

private void returno(bool r) //Retorna a el TextBox de Ingreso de datos {

if (r == true)

{

PANTALLA1.Focus();

PANTALLA1.Select(PANTALLA1.Text.Length, 0);

}

}

private void btn1_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "1";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "1";

}

returno(true);

}

private void btn2_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "2";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "2";

}

returno(true);

}

private void btn3_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "3";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "3";

}

returno(true);

}

private void btn4_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "4";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "4";

}

returno(true);

}

private void btn5_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "5";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "5";

}

returno(true);

}

private void btn6_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "6";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "6";

}

returno(true);

}

private void btn7_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "7";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "7";

}

returno(true);

}

private void btn8_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "8";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "8";

}

returno(true);

}

private void btn9_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "9";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "9";

}

returno(true);

}

private void btndecimal_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "0.";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + ".";

}

returno(true);

}

private void btnDivision_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "/";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "/";

}

returno(true);

}

private void btnMultiplicacion_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "*";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "*";

}

returno(true);

}

private void btnResta_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "-";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "-";

}

returno(true);

}

private void btnSuma_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "+";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "+";

}

returno(true);

}

private void btnParentesisIzq_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "(";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "(";

}

returno(true);

}

private void btnParentesisDer_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = ")";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + ")";

}

returno(true);

}

private void btnSigno_Click(object sender, EventArgs e)

{

txtResultado.Text =Convert.ToString((0 - Convert.ToDouble(txtResultado.Text)).ToString("0.0"));

returno(true);

}

private void btnIgual_Click(object sender, EventArgs e)

{

if(PANTALLA1.Text.Length == 1)

{

txtResultado.Text = f.unTermino(PANTALLA1.Text);

}

else if(f.SignoPU(PANTALLA1.Text) == false)

{

if (f.verificar(PANTALLA1.Text) == true && f.verificarSignos(PANTALLA1.Text) == true)

{

f.convertir(f.verificarNegativo(PANTALLA1.Text));

txtResultado.Text = f.evaluar(PANTALLA1.Text.Length);

Inicio = true;

returno(true);

}

else {

txtResultado.Text = "Error de Sintasis";

Inicio = true;

returno(true);

}

}

else {

txtResultado.Text = "Error de Sintasis";

Inicio = true;

returno(true);

}

}

private void btnCE_Click(object sender, EventArgs e)

{

if (PANTALLA1.Text.Length > 0)

PANTALLA1.Text = PANTALLA1.Text.Remove(PANTALLA1.Text.Length - 1, 1);

if (PANTALLA1.Text.Length == 0)

{

PANTALLA1.Text = "";

Inicio = true;

}

if (PANTALLA1.Text == "") { }

returno(true);

}

private void btnMemo_Click(object sender, EventArgs e)

{

int d = f.TamMemo();

if (d == 0)

{

txtResultado.Text = "No hay Datos en la Memoria";

}

else if (c < d)

{

PANTALLA1.Text = f.Memo(c);

c++;

}

else {

c = 0;

PANTALLA1.Text = f.Memo(c);

c++;

}

returno(true);

}

private void btnMemoMas_Click(object sender, EventArgs e)

{

f.MemoMas(PANTALLA1.Text);

returno(true);

c = 0;

}

private void txtIngreso_KeyPress(object sender, KeyPressEventArgs e) {

string Cad = "1234567890,.()+-*/" + (char)18 + (char)Keys.Back + (char)Keys.Escape;

if (!Cad.Contains(e.KeyChar))

{

e.Handled = true;

}

if (e.KeyChar == (char)Keys.Enter)

{

e.Handled = true;

IGUAL.PerformClick();

}

if (e.KeyChar == (char)Keys.Escape)

{

e.Handled = true;

BORRAR.PerformClick();

}

}

private void button1_Click(object sender, EventArgs e)

{

PANTALLA1.Text = "";

txtResultado.Text = "0.";

Inicio = true;

returno(true);

}

private void button2_Click(object sender, EventArgs e)

{

if (Inicio)

{

PANTALLA1.Text = "0";

Inicio = false;

}

else {

PANTALLA1.Text = PANTALLA1.Text + "0";

}

returno(true);

}

private void Calculadora_Load(object sender, EventArgs e)

{

}

}

}

Codigo de funciones

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace Calculadora_FNI

{

public class Funciones {

CCadena cola;

string m1 = "", m2 = "", m3 = "";

public bool SignoPU(string Q) {

int pos = Q.Length;

if (Q[0] == '+' || Q[0] == '/' || Q[0] == '*')

return true;

else if (Q[pos - 1] == '+' || Q[pos - 1] == '-' || Q[pos - 1] == '/' || Q[pos - 1] == '*')

return true;

else return false;

}

public string unTermino(string Q) //Verifica si solo se introdujo un caracter en el TextBox. {

int pos = 0;

if (Q[pos] != '(' && Q[pos] != ')' && Q[pos] != '+' && Q[pos] != '-' && Q[pos] != '*' && Q[pos] != '/')

return Q + ".00";

else return "Error de SYNTAXIS";

}

public bool verificar(string Q) //Verifica la cantidad de parentesis Colocados en la Cadena {

int i = 0, j = 0, pos = 0;

while (pos < Q.Length)

{

if (Q[pos] == '(')

i++;

else if (Q[pos] == ')')

j++;

pos++;

}

if (i > j)

return true;

else if (i == j)

return true;

else return false;

}

public bool verificarSignos(string Q) {

int pos = 0;

bool res = true;

while (pos < (Q.Length) - 1)

{

if (Q[pos] == '+' && Q[pos + 1] == '*')

{

res = false; break;

}

else if (Q[pos] == '+' && Q[pos + 1] == '/')

{

res = false; break;

}

else if (Q[pos] == '-' && Q[pos + 1] == '*')

{

res = false; break;

}

else if (Q[pos] == '-' && Q[pos + 1] == '/')

{

res = false; break;

}

else if (Q[pos] == '*' && Q[pos + 1] == '*')

{

res = false; break;

}

else if (Q[pos] == '*' && Q[pos + 1] == '/')

{

res = false; break;

}

else if (Q[pos] == '/' && Q[pos + 1] == '*')

{

res = false; break;

}

else if (Q[pos] == '/' && Q[pos + 1] == '/')

{

res = false; break;

}

else if (Q[pos] == '(' && Q[pos + 1] == ')')

{

res = false; break;

}

else if (Q[pos] == ')' && Q[pos + 1] != '+' && Q[pos + 1] != '-' && Q[pos + 1] != '*' && Q[pos + 1] != '/' && Q[pos + 1] != ')' && Q[pos + 1] != '(')

{

res = false; break;

}

pos++;

}

return res;

}

public string verificarNegativo(string Q) //Verifica un Numero Negativo {

int pos = 0;

while(pos < (Q.Length)-1)

{

if (Q[pos] == '(' && Q[pos + 1] == '-')

{

Q = Q.Remove(pos + 1, 1);

Q = Q.Insert((pos + 1), "n");

}

else if (Q[pos] == '+' && Q[pos + 1] == '-')

{

Q = Q.Remove(pos + 1, 1);

Q = Q.Insert((pos + 1), "n");

}

else if (Q[pos] == '-' && Q[pos + 1] == '-')

{

Q = Q.Remove(pos + 1, 1);

Q = Q.Insert((pos + 1), "n");

}

else if (Q[pos] == '*' && Q[pos + 1] == '-')

{

Q = Q.Remove(pos + 1, 1);

Q = Q.Insert((pos + 1), "n");

}

else if (Q[pos] == '*' && Q[pos + 1] == '+')

{

Q = Q.Remove(pos + 1, 1);

}

else if (Q[pos] == '/' && Q[pos + 1] == '-')

{

Q = Q.Remove(pos + 1, 1);

Q = Q.Insert((pos + 1), "n");

}

else if (Q[pos] == '/' && Q[pos + 1] == '+')

{

Q = Q.Remove(pos + 1, 1);

}

else if (Q[pos + 1] == '(' && Q[pos] != '+' && Q[pos] != '-' && Q[pos] != '*' && Q[pos] != '/')

{

Q = Q.Insert((pos + 1), "*");

}

pos++;

}

return Q;

}

public int prio(char cad) {

int i = 0;

switch (cad)

{

case '/':

case '*': i = 2; break;

case '-':

case '+': i = 1; break;

default: i = 0; break;

}

return i;

}

public void convertir(string Q) {

string cad;

char car;

int pos = 0, tam;

tam = Q.Length;

cola = new CCadena((tam) +5);

PChar pila = new PChar(tam);

while (pos < tam)

{

cad = "";

switch (Q[pos])

{

case '(':

pila.Push(Q[pos]); break;

case ')': while (pila.Top() != '(')

{

car = pila.Top();

pila.Pop();

cola.Push(Convert.ToString(car));

}

pila.Pop(); break;

case '*':

case '/':

case '-':

case '+':

while (prio(pila.Top()) >= prio(Q[pos]))

{

car = pila.Top();

pila.Pop();

cola.Push(Convert.ToString(car));

}

pila.Push(Q[pos]); break;

default:

do {

car = Q[pos];

cad = cad + car;

pos++;

if (pos == tam)

break;

} while (Q[pos] != '+' && Q[pos] != '-' && Q[pos] != '*' && Q[pos] != '/' && Q[pos] != '(' && Q[pos] != ')');

cola.Push(cad); pos--; break;

}

pos++;

}

while (!pila.Empty())

{

if (pila.Top() == '(')

{

pila.Pop();

}

else {

cola.Push(Convert.ToString(pila.Top()));

pila.Pop();

}

}

}

public string evaluar(int tam) {

string cad = "", aux = "";

decimal r = 0, x, y;

PDecimal pila2 = new PDecimal(tam);

while (!cola.Empty())

{

cad = cola.Front();

cola.Pop();

switch (cad[0])

{

case '*':

case '/':

case '+':

case '-':

y = pila2.Top();

pila2.Pop();

x = pila2.Top();

pila2.Pop();

switch (cad[0])

{

case '*': r = x * y; break;

case '/':

if (y == 0)

return "Error Matematico";

else r = x / y;

break;

case '+': r = x + y; break;

case '-': r = x - y; break;

}

pila2.Push(r); break;

case 'n':

aux = cad;

aux = aux.Remove(0, 1);

aux = aux.Insert(0, "-");

pila2.Push(separador(aux));

break;

default: pila2.Push(separador(cad)); break;

}

}

return Convert.ToString(pila2.Top().ToString("0.0")); }

public decimal separador(string dato) {

decimal importe = 0;

if (dato.Contains('.'))

{

importe = Convert.ToDecimal(dato, System.Globalization.CultureInfo.InvariantCulture);

}

else {

string coma = dato;

coma.Replace(',', '.');

importe = Convert.ToDecimal(coma);

}

return importe;

}

public void MemoMas(string cad) {

if (m1 == "")

{

m1 = cad;

}

else if (m2 == "")

{

m2 = cad;

}

else if (m3 == "")

{

m3 = cad;

}

else {

m1 = m2;

m2 = m3;

m3 = cad;

}

}

public int TamMemo() {

int c = 0;

if (m1 != "")

c++;

if (m2 != "")

c++;

if (m3 != "")

c++;

return c;

}

public string Memo(int c) {

string aux;

if (c == 0)

aux = m1;

else if (c == 1)

aux = m2;

else aux = m3;

return aux;

}

}

}

APARIENCIA DE LA CALCULADORA FNI CALCULATOR

ICONO DE LA CALCULADORA FNI CALCULATOR PAGE 21