domingo, 2 de agosto de 2015

Calculadora científica

Integrantes:
Sergio Andrés Sepúlveda
Sthefany Blanco
Juan David Franco


Para el primer avance de la calculadora científica desarrollamos una clase simple que contiene los métodos para operar 2 números ya sea sumándolos, restándolos, multiplicándolos o dividiéndolos, además se establecen dominios para los números tales como naturales, enteros, racionales, complejos y reales.

¿que se ha implementado hasta el momento?
por ahora se tiene implementado los métodos de suma, resta, multiplicación y división dentro de los dominios de naturales, enteros y racionales dentro de los cuales se manejan las restricciones de números negativos en los números naturales y la división por 0 en los demás.

¿que falta?
falta el manejo de los números complejos y reales y hacer la validación al momento de ingresar los números y las opciones en el menú.

Diagrama de clase:

Código fuente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CalculadoraCientifica
{
    class Calculadora
    {
        //Métodos de operacion con naturales
        public static int SumaNatural(int x, int y)
        {
            if (x < 0 || y < 0)//verifica si los números ingresados están dentro del rango de los naturales
            {
                throw new SystemException();
            }
            else
            {
                int suma = x + y;
                return suma;
            }
        }
        public static int RestaNatural(int x, int y)
        {
            if (x < 0 || y < 0)//verifica si los números ingresados están dentro del rango de los naturales
            {
                throw new SystemException();
            }
            else if (x < y)//verifica si el segundo numero es mayor que el primero ya que esto produce que el resultado esté fuera de los numeros naturales
            {
                throw new SystemException();
            }
            else 
            {
                int resta = x - y;
                return resta;
            }
        }
        public static int MultiplicacionNatural(int x, int y)
        {
            if (x < 0 || y < 0)//verifica si los números ingresados están dentro del rango de los naturales
            {
                throw new SystemException();
            }
            else
            {
                int multi = x * y;
                return multi;
            }
            
        }
        public static int DivisionNatural(int x, int y)
        {
            if (x < 0 || y < 0)//verifica si los números ingresados están dentro del rango de los naturales
            {
                throw new SystemException();
            }
            else if (y == 0)//verifica si el segundo número ingresado es 0 ya que la división por 0 no existe
            {
                throw new DivideByZeroException();
            }
            else
            {
                int div = x / y;
                return div;
            }         
        }
        //Métodos de operacion de enteros
        public static int SumaEntero(int x, int y)
        {
            int suma = x + y;
            return suma;
        }

        public static int RestaEntero(int x, int y)
        {
            int resta = x - y;
            return resta;
        }
        public static int MultiplicacionEntero(int x, int y)
        {
            int multi = x * y;
            return multi;
        }
        public static int DivisionEntero(int x, int y)
        {
            if (y == 0)//verifica si el segundo número ingresado es 0 ya que la división por 0 no existe
            {
                throw new DivideByZeroException();
            }
            else
            {
                int div = x / y;
                return div;
            }
        }

        //Métodos de operacion de racionales
        public static double SumaRacional(double x, double y)
        {
            double suma = x + y;
            return suma;
        }

        public static double RestaRacional(double x, double y)
        {
            double resta = x - y;
            return resta;
        }
        public static double MultiplicacionRacional(double x, double y)
        {
            double multi = x * y;
            return multi;
        }
        public static double DivisionRacional(double x, double y)
        {
            if (y == 0)//verifica si el segundo número ingresado es 0 ya que la división por 0 no existe
            {
                throw new DivideByZeroException();
            }
            else
            {
                double div = x / y;
                return div;
            }
        }

        // Menu principal 
        static void Main(string[] args)
        {
            //variables para los operadores
            int a, b; //naturales y enteros
            double c, d; //racionales
            Console.WriteLine("Seleccione el dominio de números para trabajar:\n1.Naturales\n2.Enteros\n3.Racionales\n4.Reales\n5.Complejos\n6.Salir\n");
            int menu = int.Parse(Console.ReadLine());
            switch(menu)
            {
            //menu números naturales
            case 1:
                Console.WriteLine("\nEscriba el primer valor: ");
                a = int.Parse(Console.ReadLine());
                Console.WriteLine("\nEscriba el segundo valor: ");
                b = int.Parse(Console.ReadLine());
                Console.WriteLine("\nRecuerde que los numeros naturales no comprenden los números negativos\n ni los que tienen parte decimal");
                Console.WriteLine("\nSeleccione la operación:\n1.Suma\n2.Resta\n3.Multiplicación\n4.División\n5.Salir\n");
                int menunatural = int.Parse(Console.ReadLine());
                switch (menunatural)
                {
                case 1:
                    try
                    {
                        Console.WriteLine("\nSuma = " + SumaNatural(a, b));
                        
                    }
                    catch (SystemException e)
                    {
                        Console.WriteLine("\nEn los números naturales no entran los numeros negativos");
                    }
                    break;
                case 2:
                    try
                    {
                        Console.WriteLine("\nResta = " + RestaNatural(a, b));
                    }
                    catch (SystemException e)
                    {
                        Console.WriteLine("\nEn los números naturales no entran los numeros negativos");
                    }
                    break;
                case 3:
                    try 
                    {
                        Console.WriteLine("\nMultiplicación = " + MultiplicacionNatural(a, b));
                    }
                    catch (SystemException e)
                    {
                        Console.WriteLine("\nEn los números naturales no entran los numeros negativos");
                    }
                    break;
                case 4:
                    try
                    {
                        Console.WriteLine("\nDivisión = " + DivisionNatural(a, b));
                    }
                    catch (DivideByZeroException e)
                    {
                        Console.WriteLine("\nNo existe la división por 0");
                    }
                    catch (SystemException e)
                    {
                        Console.WriteLine("\nEn los números naturales no entran los numeros negativos");
                    }
                    break;
                case 5: 
                    System.Environment.Exit(0);
                    break;
                default:
                    Console.WriteLine("\nEscriba un numero de 1 a 5");
                    break;
            }
                break;
            //menu números enteros
            case 2:
                Console.WriteLine("\nEscriba el primer valor: ");
                a = int.Parse(Console.ReadLine());
                Console.WriteLine("\nEscriba el segundo valor: ");
                b = int.Parse(Console.ReadLine());
                Console.WriteLine("\nRecuerde que los números enteros no comprenden los números\n que tienen parte decimal");
                Console.WriteLine("\nSeleccione la operación:\n1.Suma\n2.Resta\n3.Multiplicación\n4.División\n5.Salir\n");
                int menuentero = int.Parse(Console.ReadLine());
                switch (menuentero)
                {
                    case 1:
                        Console.WriteLine("\nSuma = " + SumaEntero(a,b));
                        break;
                    case 2:
                        Console.WriteLine("\nResta = " + RestaEntero(a, b));
                        break;
                    case 3:
                        Console.WriteLine("\nMultiplicación = " + MultiplicacionEntero(a, b));
                        break;
                    case 4:
                        try
                        {
                            Console.WriteLine("\nDivisión = " + DivisionEntero(a, b));
                        }
                        catch (DivideByZeroException e)
                        {
                            Console.WriteLine("\nNo existe la división por 0");
                        }
                        break;
                    case 5:
                        System.Environment.Exit(0);
                        break;
                    default:
                        Console.WriteLine("\nEscriba un numero de 1 a 5");
                        break;
                }
                break;
            //menu números racionales
            case 3:
                Console.WriteLine("\nEscriba el primer valor: ");
                c = double.Parse(Console.ReadLine());
                Console.WriteLine("\nEscriba el segundo valor: ");
                d = double.Parse(Console.ReadLine());
                Console.WriteLine("\nSeleccione la operación:\n1.Suma\n2.Resta\n3.Multiplicación\n4.División\n5.Salir\n");
                int menuracional = int.Parse(Console.ReadLine());
                switch (menuracional)
                {
                    case 1:
                        Console.WriteLine("\nSuma = " + SumaRacional(c, d));
                        break;
                    case 2:
                        Console.WriteLine("\nResta = " + RestaRacional(c, d));
                        break;
                    case 3:
                        Console.WriteLine("\nMultiplicación = " + MultiplicacionRacional(c, d));
                        break;
                    case 4:
                        try
                        {
                            Console.WriteLine("\nDivisión = " + DivisionRacional(c, d));
                        }
                        catch (DivideByZeroException e)
                        {
                            Console.WriteLine("\nNo existe la división por 0");
                        }
                        break;
                    case 5:
                        System.Environment.Exit(0);
                        break;
                    default:
                        Console.WriteLine("\nEscriba un numero de 1 a 5");
                        break;
                }
                    break;
                case 4:
                    Console.WriteLine("\nNo implementado aun");
                    break;
                case 5:
                    Console.WriteLine("\nNo implementado aun");
                    break;
                case 6:
                    System.Environment.Exit(0);
                    break;
                default:
                Console.WriteLine("\nEscriba un numero de 1 a 6");
                break;
            }
            Console.ReadLine(); 
        }
    }
}

No hay comentarios:

Publicar un comentario