none
textbox RRS feed

  • Pregunta

  • tengo una duda, nose que error podria tener, usando c# windows forms, estoy tratando con un convertidor de temperaturas celsius,farenheit y kelvin, use dos combobox para las temperaturas de entrada y salida, y dos textbox uno para que ingresen el valor en celsius a convertir y otra la salida, pero el problema que tengo es que como lo he hecho con metodos y objetos, a la hora de correr el programa me tira la misma respuesta, osea lo que coloco en en textbox de entrada esa respuesta me da en salida y ya estuve intentando por horas, ayuda por favor!
    lunes, 25 de septiembre de 2017 21:41

Respuestas

  • Según el código que adjuntas el resultado que obtienes es el esperado porque retornas el mismo valor que recibes como parámetro.

    double Farenheit = 0, celsius = 0;
    if (celsius > 0)
    {
    	Farenheit = ((celsius * 9) / 5) + 32;
    	return TemperaturaCelsius;
    	return Farenheit;
    }

    Te propongo enlazar los datos -que muestran los desplegables- a un conjunto de constantes de tipo enum  (conteniendo las unidades a convertir: Celsius, Fahrenheit, Kelvin), además te sugiero cambiar la firma del método para recibir como datos de entrada la unidad base, la unidad a convertir y el valor (grados), por ejemplo:

    - Enlazar datos a los desplegables:

    public enum Units { Celsius, Fahrenheit, Kelvin }
    
    private void Form1_Load(object sender, EventArgs e)
    {
    	cbxFrom.DataSource = Enum.GetValues(typeof(Units));
    	cbxTo.DataSource = Enum.GetValues(typeof(Units));
    }

    - Método TemperatureConverter():

    public decimal TemperatureConverter(Units From, Units To, decimal Value)
    {
    	if (From == Units.Celsius && To == Units.Fahrenheit)
    		return 9 * Value / 5 + 32;
    
    	if (From == Units.Fahrenheit && To == Units.Celsius)
    		return 5 * (Value - 32) / 9;
    
    	if (From == Units.Kelvin && To == Units.Celsius)
    		return Value - 273.15M;
    
    	//Other conversions
    
    	return 0;
    }

    - Invocar método:

    private void btnTemperatureConverter_Click(object sender, EventArgs e)
    {            
    	txtResult.Text = TemperatureConverter((Units)cbxFrom.SelectedValue, 
    		(Units)cbxTo.SelectedValue, decimal.Parse(txtValue.Text)).ToString();
    }


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    lunes, 25 de septiembre de 2017 23:51

Todas las respuestas

  • Este es el metodo que tengo por ahorita, solo estaba intentando con celsius y farenheit pero ni esos me salen, supongo las formulas estan bien.

      public double CelsiUsAFarenheit(double TemperaturaCelsius, double TemperaturaFarh)
            {

                double Farenheit=0, celsius=0;
                if (celsius > 0)
                {
                    Farenheit = ((celsius * 9) / 5) + 32;
                    return TemperaturaCelsius;
                }
                else
                {
                    if (Farenheit > 0)
                    {
                        celsius = ((Farenheit - 32) / 1.8);
                        return TemperaturaFarh;
                    }
                }
                return TemperaturaCelsius;
            }

    lunes, 25 de septiembre de 2017 21:43
  • Debes subir una imagen del código para tener una idea. y poderte ayudar.

    Osiris Germosen República Dominicana

    lunes, 25 de septiembre de 2017 21:43
  • COMO ACABO DE CREAR LA CUENTA NO ME DEJA HASTA QUE LA VERIFIQUE, PERO QUE NECESITAS? LA CLASE QUE HE CREADO TE PUEDE SERVIR PARA VER?
    lunes, 25 de septiembre de 2017 21:51
  • Según el código que adjuntas el resultado que obtienes es el esperado porque retornas el mismo valor que recibes como parámetro.

    double Farenheit = 0, celsius = 0;
    if (celsius > 0)
    {
    	Farenheit = ((celsius * 9) / 5) + 32;
    	return TemperaturaCelsius;
    	return Farenheit;
    }

    Te propongo enlazar los datos -que muestran los desplegables- a un conjunto de constantes de tipo enum  (conteniendo las unidades a convertir: Celsius, Fahrenheit, Kelvin), además te sugiero cambiar la firma del método para recibir como datos de entrada la unidad base, la unidad a convertir y el valor (grados), por ejemplo:

    - Enlazar datos a los desplegables:

    public enum Units { Celsius, Fahrenheit, Kelvin }
    
    private void Form1_Load(object sender, EventArgs e)
    {
    	cbxFrom.DataSource = Enum.GetValues(typeof(Units));
    	cbxTo.DataSource = Enum.GetValues(typeof(Units));
    }

    - Método TemperatureConverter():

    public decimal TemperatureConverter(Units From, Units To, decimal Value)
    {
    	if (From == Units.Celsius && To == Units.Fahrenheit)
    		return 9 * Value / 5 + 32;
    
    	if (From == Units.Fahrenheit && To == Units.Celsius)
    		return 5 * (Value - 32) / 9;
    
    	if (From == Units.Kelvin && To == Units.Celsius)
    		return Value - 273.15M;
    
    	//Other conversions
    
    	return 0;
    }

    - Invocar método:

    private void btnTemperatureConverter_Click(object sender, EventArgs e)
    {            
    	txtResult.Text = TemperatureConverter((Units)cbxFrom.SelectedValue, 
    		(Units)cbxTo.SelectedValue, decimal.Parse(txtValue.Text)).ToString();
    }


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    lunes, 25 de septiembre de 2017 23:51