Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Kurolox en 17 Julio 2012, 20:20 pm



Título: [C++] Problema con conversor de temperaturas
Publicado por: Kurolox en 17 Julio 2012, 20:20 pm
Buenas. Estoy aprendiendo C++ Por un libro. No llevo mas que los primeros 5 temas, pero queria hacer un proyecto para ver que tal iba. He intentado desarrollar un conversor de celsius a fahrenheit y viceversa, y he conseguido compilarlo. Pero al ejecutarlo, solo me sale esto:

|_____________________________|________________________|

EDITO: Puedo escribir. Si escribo 1 o 2 me pide directamente el valor de celsius, y despues el de fahrenheit

Código
  1. #include <iostream>
  2.  
  3. float convertircf(float);
  4. float convertirfc(float);
  5.  
  6. int main()
  7. {
  8.    int convertir(int);
  9.    float farhenheit;
  10.    float celsius;
  11.    int seleccion;
  12.  
  13.    std::cout << "|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\r";
  14.    std::cout << "|           Conversor de temperaturas v1.0               |\r";
  15.    std::cout << "|           ------------------------------               |\r";
  16.    std::cout << "|                                                        |\r";
  17.    std::cout << "|                Made By DigitalCarlox                   |\r";
  18.    std::cout << "|                                                        |\r";
  19.    std::cout << "|________________________________________________________|\r\r";
  20.    std::cout << "Seleccione una opción\r\r";
  21.    std::cout << "|^^^^^^^^^^^^^^^^^^^^^^^^^|\r";
  22.    std::cout << "|1. Celsius a Fahrenheit  |\r";
  23.    std::cout << "|                         |\r";
  24.    std::cout << "|2. Fahrenheit a Celsius  |\r";
  25.    std::cout << "|_________________________|\r";
  26.    std::cin >> seleccion;
  27.  
  28.    if (seleccion = 1)
  29.    {
  30.     std::cout << "\r\rHa escogido Celsius a Fahrenheit.\r";
  31.     std::cout << "Por favor, introduzca la temperatura en Celsius.\r";
  32.     std::cin >> celsius;
  33.     celsius = convertircf(farhenheit);
  34.     std::cout << "La temperatura en Fahrenheit es: ";
  35.     std::cout << farhenheit << "\r";
  36.                  }
  37.    if (seleccion = 2)
  38.    {
  39.     std::cout << "\r\rHa escogido Fahrenheit a Celsius.\r";
  40.     std::cout << "Por favor, introduzca la temperatura en Fahrenheit.\r";
  41.     std::cin >> farhenheit;
  42.     celsius = convertircf(farhenheit);
  43.     std::cout << "La temperatura en Fahrenheit es: ";
  44.     std::cout << celsius << "\r";
  45.  
  46.                  }
  47.    }
  48.    float convertircf(float celsius)
  49.    {
  50.        float farhenheit;
  51.        farhenheit = ((celsius * 9) / 5) + 32;
  52.        return farhenheit;
  53.        }
  54.    float convertirfc(float farhenheit)
  55.    {
  56.        float celsius;
  57.        celsius = ((farhenheit - 32) * 5) / 9;
  58.        return celsius;
  59.        }
  60.  

Seguramente el problema sea obvio, pero yo no lo consigo ver. Tampoco quiero soluciones muy avanzadas, por que es solo un programa de bajo nivel. (Ya vi algunas fallas, pero aun no puedo solucionarlas por que no tengo el nivel)


Título: Re: [C++] Problema con conversor de temperaturas
Publicado por: do-while en 17 Julio 2012, 20:45 pm
¡Buenas!

Solo le he echado un vistazo por encima, pero en los if, en lugar de hacer una comparacion estas haciendo una asignacion. Para comparar tienes que usar el doble igual:
Código
  1. if(algo == loquesea)
  2.    ...
  3.  

¡Saludos!


Título: Re: [C++] Problema con conversor de temperaturas
Publicado por: DickGumshoe en 17 Julio 2012, 20:46 pm
En los if debes usar el operador de comparación ("=="), no es de asignación ('=').

Así:

Código
  1. #include <iostream>
  2. using namespace std;
  3. float convertircf(float);
  4. float convertirfc(float);
  5.  
  6. int main()
  7. {
  8.    int convertir(int);
  9.    float farhenheit;
  10.    float celsius;
  11.    int seleccion;
  12.  
  13.    cout << "|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|" << endl;
  14.    cout << "|           Conversor de temperaturas v1.0               |" << endl;
  15.    cout << "|           ------------------------------               |" <<endl;
  16.    cout << "|                                                        |"<<endl;
  17.    cout << "|                Made By DigitalCarlox                   |"<<endl;
  18.    cout << "|                                                        |"<<endl;
  19.    cout << "|________________________________________________________|\r\r"<<endl;
  20.    cout << "Seleccione una opción\r\r"<<endl;
  21.    cout << "|^^^^^^^^^^^^^^^^^^^^^^^^^|\r"<<endl;
  22.    cout << "|1. Celsius a Fahrenheit  |\r"<<endl;
  23.    cout << "|                         |\r"<<endl;
  24.    cout << "|2. Fahrenheit a Celsius  |\r"<<endl;
  25.    cout << "|_________________________|\r"<<endl;
  26.    cin >> seleccion;
  27.  
  28.    if (seleccion == 1)
  29.    {
  30.     cout << "\r\rHa escogido Celsius a Fahrenheit.\r";
  31.     cout << "Por favor, introduzca la temperatura en Celsius.\r";
  32.     cin >> celsius;
  33.     celsius = convertircf(farhenheit);
  34.     cout << "La temperatura en Fahrenheit es: ";
  35.     cout << farhenheit << "\r";
  36.                  }
  37.    if (seleccion == 2)
  38.    {
  39.     cout << "\r\rHa escogido Fahrenheit a Celsius.\r";
  40.     cout << "Por favor, introduzca la temperatura en Fahrenheit.\r";
  41.     cin >> farhenheit;
  42.     celsius = convertircf(farhenheit);
  43.     cout << "La temperatura en Fahrenheit es: ";
  44.     cout << celsius << "\r";
  45.  
  46.                  }
  47.    }
  48.    float convertircf(float celsius)
  49.    {
  50.        float farhenheit;
  51.        farhenheit = ((celsius * 9) / 5) + 32;
  52.        return farhenheit;
  53.        }
  54.    float convertirfc(float farhenheit)
  55.    {
  56.        float celsius;
  57.        celsius = ((farhenheit - 32) * 5) / 9;
  58.        return celsius;
  59.        }
  60.  

También he puesto en el programa para que hagas saltos de línea (endl), y para que no tengas que poner std:: delante de cin y cout, he puesto using namespace std;

Saludos!



Título: Re: [C++] Problema con conversor de temperaturas
Publicado por: dac en 17 Julio 2012, 20:51 pm
Código:
if (seleccion = 1)
    {
     std::cout << "\r\rHa escogido Celsius a Fahrenheit.\r";
     std::cout << "Por favor, introduzca la temperatura en Celsius.\r";
     std::cin >> celsius;
     celsius = convertircf(farhenheit);  \\ ¿?¿? o.O
     std::cout << "La temperatura en Fahrenheit es: ";
     std::cout << farhenheit << "\r";
                  }
    if (seleccion = 2)
    {
     std::cout << "\r\rHa escogido Fahrenheit a Celsius.\r";
     std::cout << "Por favor, introduzca la temperatura en Fahrenheit.\r";
     std::cin >> farhenheit;
     celsius = convertircf(farhenheit);
     std::cout << "La temperatura en Fahrenheit es: ";
     std::cout << celsius << "\r";
 
                  }


Esta como que alreves... deberia ser:


Código:
if (seleccion == 1) \\ ==
    {
     std::cout << "\r\rHa escogido Celsius a Fahrenheit.\r";
     std::cout << "Por favor, introduzca la temperatura en Celsius.\r";
     std::cin >> celsius;
     farhenheit = convertircf(celsius);  
     std::cout << "La temperatura en Fahrenheit es: ";
     std::cout << farhenheit << "\r";
                  }
    if (seleccion == 2) \\ ==
    {
     std::cout << "\r\rHa escogido Fahrenheit a Celsius.\r";
     std::cout << "Por favor, introduzca la temperatura en Fahrenheit.\r";
     std::cin >> farhenheit;
     celsius = convertircf(farhenheit);
     std::cout << "La temperatura en Fahrenheit es: ";
     std::cout << celsius << "\r";
 
                  }