Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: id4vp8 en 27 Abril 2014, 19:15 pm



Título: Calculadora basica
Publicado por: id4vp8 en 27 Abril 2014, 19:15 pm
 :laugh:hola lo que pasa es que me dejaron una calculadora basica en c#, de suma,resta division, multiplicacion, division y potencia, para suma,resta,potencia el resultado debe ser en enteros, para multiplicacion en float y division en double hice el codigo pero la multipliccion y division me toma las entradas como enteras elimina el decimal ejemplo 1.5 *2= 2 como puedo solucionarlo aqi el codigo

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

//Programa de Operaciones
namespace Operaciones
{
    class Program
    {
        //metodos para devolver el valor
        static int Suma(int a1, int a2)
        {
            return a1 + a2;
        }

        static int Resta(int a1, int a2)
        {
            return a1 - a2;
        }

        static float Multiplicacion(float a3, float a4)
        {
            return a3 * a4;
        }

        static double Division(double a1, double a2)
        {
            if (a2 != 0)
            {// Si a2 es distinto de 0...
                return a1 / a2;
            }
            return 0;
        }

        static int Potencia(int a1, int a2)
        {
            int pot = a1;

            for (int i = 1; i < a2; i++)
            {
                pot *= a1;
            }

            return pot;
        }

        // PRINCIPAL DEL PROGRAMA...
        static void Main(string[] args)
        {

            int s1, s2;
            int r1, r2;
            float m1, m2;
            double d1, d2;
            int p1, p2;
            int opcion;

            Console.Write("1º) Suma" + "\n" + "2º) Resta" + "\n" + "3º) Multiplicación" + "\n" + "4º) División" + "\n" + "5º) Potencia " + "\n");
            Console.Write("Seleccione una opción: \n");
            opcion = Convert.ToInt16(Console.Read());
            opcion -= 0x30;
            switch (opcion)
            {

                case 1:
                    Console.WriteLine("Escriba el primer entero: ");
                    Console.ReadLine();
                    s1 = (Convert.ToInt32(Console.Read())) - 0x30;
                    Console.WriteLine("Escriba el segundo entero:\n");
                    Console.ReadLine();
                    s2 = (Convert.ToInt32(Console.Read())) - 0x30;
                    Console.WriteLine("La suma es: {0}", Suma(s1, s2));
                    break;

                case 2:
                    Console.WriteLine("Escriba el primer entero:");
                    Console.ReadLine();
                    r1 = (Convert.ToInt32(Console.Read())) - 0x30;
                    Console.WriteLine("Escriba el segundo entero: ");
                    Console.ReadLine();
                    r2 = (Convert.ToInt32(Console.Read())) - 0x30;
                    Console.WriteLine("La resta es:{0}", Resta(r1, r2));
                    break;

                case 3:
                    Console.WriteLine("Escriba el primer numero:");
                    Console.ReadLine();
                    m1 = (Convert.ToSingle(Console.Read())) - 0x30;
                    Console.WriteLine("Escriba el segundo numero: ");
                    Console.ReadLine();
                    m2 = (Convert.ToSingle(Console.Read())) - 0x30;
                    Console.WriteLine("La multiplicacion es:{0}", Multiplicacion(m1, m2));
                    break;

                case 4:
                    Console.WriteLine("Escriba el primer numero:");
                    Console.ReadLine();
                    d1 = (Convert.ToDouble(Console.Read())) - 0x30;
                    Console.WriteLine("Escriba el segundo numero: ");
                    Console.ReadLine();
                    d2 = (Convert.ToDouble(Console.Read())) - 0x30;
                    Console.WriteLine("La division es:{0}", Division(d1, d2));
                    break;

                case 5:
                    Console.WriteLine("Escriba el primer entero:");
                    Console.ReadLine();
                    p1 = (Convert.ToInt32(Console.Read())) - 0x30;
                    Console.WriteLine("Escriba el segundo entero: ");
                    Console.ReadLine();
                    p2 = (Convert.ToInt32(Console.Read())) - 0x30;
                    Console.WriteLine("La potencia es:{0}", Potencia(p1, p2));
                    break;

            }
            Console.ReadKey();
        }
    }
}

de antemano gracias  ;D


Título: Re: Calculadora basica
Publicado por: amchacon en 27 Abril 2014, 20:05 pm
C# no es lo mismo que C o C++. Es un lenguaje completamente diferente.


Título: Re: Calculadora basica
Publicado por: eferion en 28 Abril 2014, 09:28 am
Código
  1. m1 = (Convert.ToSingle(Console.Read())) - 0x30;

por qué restas 0x30??? eso se hace si tienes un carácter que representa un número y quieres obtener el valor numérico correspondiente: '9' - 0x30 = 9.

Pero eso con números de varios dígitos no sirve, tendrías que aplicarlo dígito a dígito.

Además, para terminar, las funciones de Convert.ToAlgo ya están realizando la conversión de un string a un tipo numérico concreto... luego ese 0x30 carece aún más de sentido.

Y para terminar, como digo amchacon, este es un foro de C y C++... el de .Net es otro.

Un saludo.