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
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. |