[C++] Problema con conversor de temperaturas

Iniciado por Kurolox, 17 Julio 2012, 20:20 PM

0 Miembros y 1 Visitante están viendo este tema.

Kurolox

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 (cpp) [Seleccionar]

#include <iostream>

float convertircf(float);
float convertirfc(float);

int main()
{
   int convertir(int);
   float farhenheit;
   float celsius;
   int seleccion;

   std::cout << "|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|\r";
   std::cout << "|           Conversor de temperaturas v1.0               |\r";
   std::cout << "|           ------------------------------               |\r";
   std::cout << "|                                                        |\r";
   std::cout << "|                Made By DigitalCarlox                   |\r";
   std::cout << "|                                                        |\r";
   std::cout << "|________________________________________________________|\r\r";
   std::cout << "Seleccione una opción\r\r";
   std::cout << "|^^^^^^^^^^^^^^^^^^^^^^^^^|\r";
   std::cout << "|1. Celsius a Fahrenheit  |\r";
   std::cout << "|                         |\r";
   std::cout << "|2. Fahrenheit a Celsius  |\r";
   std::cout << "|_________________________|\r";
   std::cin >> seleccion;
   
   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);
    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";
                 
                 }
   }
   float convertircf(float celsius)
   {
       float farhenheit;
       farhenheit = ((celsius * 9) / 5) + 32;
       return farhenheit;
       }
   float convertirfc(float farhenheit)
   {
       float celsius;
       celsius = ((farhenheit - 32) * 5) / 9;
       return celsius;
       }


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)

do-while

¡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:

if(algo == loquesea)
    ...


¡Saludos!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!

DickGumshoe

En los if debes usar el operador de comparación ("=="), no es de asignación ('=').

Así:

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;
float convertircf(float);
float convertirfc(float);

int main()
{
   int convertir(int);
   float farhenheit;
   float celsius;
   int seleccion;

   cout << "|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^|" << endl;
   cout << "|           Conversor de temperaturas v1.0               |" << endl;
   cout << "|           ------------------------------               |" <<endl;
   cout << "|                                                        |"<<endl;
   cout << "|                Made By DigitalCarlox                   |"<<endl;
   cout << "|                                                        |"<<endl;
   cout << "|________________________________________________________|\r\r"<<endl;
   cout << "Seleccione una opción\r\r"<<endl;
   cout << "|^^^^^^^^^^^^^^^^^^^^^^^^^|\r"<<endl;
   cout << "|1. Celsius a Fahrenheit  |\r"<<endl;
   cout << "|                         |\r"<<endl;
   cout << "|2. Fahrenheit a Celsius  |\r"<<endl;
   cout << "|_________________________|\r"<<endl;
   cin >> seleccion;

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

                 }
   }
   float convertircf(float celsius)
   {
       float farhenheit;
       farhenheit = ((celsius * 9) / 5) + 32;
       return farhenheit;
       }
   float convertirfc(float farhenheit)
   {
       float celsius;
       celsius = ((farhenheit - 32) * 5) / 9;
       return celsius;
       }


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!


dac

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:


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";

                 }