• Viernes 19 de Abril de 2024, 11:36

Autor Tema:  Conversor temperaturas {Problema novato}  (Leído 1125 veces)

ulrick_psp

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Conversor temperaturas {Problema novato}
« en: Jueves 18 de Junio de 2009, 12:33 »
0
Buenos días amigos! Soy nuevo en el foro y también bastante nuevo en esto de la programación. Como voy a hacer Ingenieria de Telecomunicaciones el próximo curso, pues he empezado a hacer un poco de C, que me lo exigirán este año.

He creado unos pequeños programitas, todos ellos numericos..y la verdad que mas o menos me defiendo.

El caso es que estaba en proceso de crear un programita que fuera un conversor de Celsius a Fahrenhait y viceversa pero me he topado con algun error que yo no detecto. Aqui os dejo el codigo, a ver si alguien me pudiera echar un vistazo y correjirmelo.
------------------------------

#include <stdio.h>
#include <stdlib.h>


int main ()
{
    strng seleccion,celsius,fahrenhait,sol1,sol2;
    printf("Si quieres pasar celsius a fahrenhait, pulsa 1 n");
    printf("Si quieres pasar fahrenhait a celsius, pulsa 2 n");
    scanf("%d", &seleccion); /*Depende de si marca 1 o 2, se utiliza un conversor u otro*/
    if (seleccion<=1)
    {
                    printf("Introduce el valor (en celsius)n");
                    scanf("%d", celsius);
                    sol1 = (celsius + 32); /*Fahrenhait = celsius + 32*/
                    printf("Los grados fahrenhait correspondientes son %fn", sol1);
                    }
    else
    if (seleccion>=2)
    {
                    printf("Introduce el valor (en fahrenhait)n");
                    scanf("%d", fahrenhait);
                    sol2 = (fahrenhait - 32); /*Celsius = Fahrenhait - 32*/
                    printf("Los grados fahrenhait correspondientes son %dn",sol2);
                    }
   
    system ("pause");
    return (0);
}

----------------------------------------------
Si encontrais algun tipo de procedimiento que no debiera utilizar porque podria ser perjudicial para mi, es decir me creara un habito que luego es dificil corregir, comentenmelo, quiero aprender jeje.

Muchas gracias de antemano!

Pistasito

  • Nuevo Miembro
  • *
  • Mensajes: 22
    • Ver Perfil
Re: Conversor temperaturas {Problema novato}
« Respuesta #1 en: Jueves 18 de Junio de 2009, 12:55 »
0
Buenas, yo te comento lo que yo creo que es, aunque tampoco se demasiado...

1) No deberias de declarar todo como string, vamos que cada declarala como lo que es. Por ejemplo, si seleccion va a ser 1 o 2, declaralo como integer.

2)En los if, dile que si es igual a seleccion, no igual o mayor. Tu pones: " if(seleccion>=1)", deberias poner: " if (seleccion == 1)" ( creo que era asi, es que aprendi hace tiempo y no me acuerdo demasiado bien...

3)En el printf de los celsius, le pasas %f que creo que es la salida de Float, no deberia ser %d.

Nose si estara bien del todo, prueba a ver...ya te digo que no controlo demasiado

ulrick_psp

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Conversor temperaturas {Problema novato}
« Respuesta #2 en: Jueves 18 de Junio de 2009, 14:48 »
0
Correjidos los errores, pero aun me sigue dando error. (No al compilar, sino al ejecutar el programa)

Quedaría así:

int main ()
{
    int seleccion,celsius,fahrenhait,sol1,sol2;
    printf("Si quieres pasar celsius a fahrenhait, pulsa 1 n");
    printf("Si quieres pasar fahrenhait a celsius, pulsa 2 n");
    scanf("%d", &seleccion); /*Depende de si marcan 1 o 2, se utiliza un conversor u otro*/
    if (seleccion==1)
    {
                    printf("Introduce el valor (en celsius)n");
                    scanf("%d", celsius);
                    sol1 = (celsius + 32); /*Fahrenhait = celsius + 32*/
                    printf("Los grados fahrenhait correspondientes son %dn", sol1);
                    }
    else
    if (seleccion==2)
    {
                    printf("Introduce el valor (en fahrenhait)n");
                    scanf("%d", fahrenhait);
                    sol2 = (fahrenhait - 32); /*Celsius = Fahrenhait - 32*/
                    printf("Los grados celsius correspondientes son %dn",sol2);
                    }
   
    system ("pause");
    return (0);


He notado 2 problemas por si puede ayudar.

1- Si elijo la opcion 1, el error salta despues de meter los grados celsius que quiero convertir a farenhait

2- Si elijo la opcion 2, no hay error pero me devuelve un valor extraño (Meto 5 Fahrenhait y me devuelve 2359176celsius)

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Conversor temperaturas {Problema novato}
« Respuesta #3 en: Jueves 18 de Junio de 2009, 17:16 »
0
¡¡Usa las etiquetas de código!! (qué pesaditos sois)

Mira los scanf()... Éste lo tienes bien:

Código: C
  1. scanf("%d", &seleccion);
  2.  
pero éstos no:

Código: C
  1. scanf("%d", celsius);
  2. scanf("%d", fahrenhait);
  3.  
¿Adivinas por qué?

ulrick_psp

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
Re: Conversor temperaturas {Problema novato}
« Respuesta #4 en: Jueves 18 de Junio de 2009, 21:37 »
0
Error de novato..perdona las molestias, a ver si ahora funciona. Muchas gracias.

Increible, un pequeño simbolito y todo al traste. Muchas gracias de verdad, funciona de maravilla!

Una ultima dudita, como puedo hacer que me redondee a decimales, no unicamente enteros??

Os copio otra vez el programa que ya funciona perfectamente.

#include <stdio.h>
#include <stdlib.h>


int main ()
{
    int seleccion,celsius,fahrenhait,sol1,sol2;
    printf("Si quieres pasar celsius a fahrenhait, pulsa 1 nn");
    printf("Si quieres pasar fahrenhait a celsius, pulsa 2 n");
    scanf("%d", &seleccion); /*Depende de si marcan 1 o 2, se utiliza un conversor u otro*/
    if (seleccion==1)
    {
                    printf("Introduce el valor (en celsius)n");
                    scanf("%d", &celsius);
                    sol1 = ((1.8 * celsius) + 32);
                    printf("Los grados fahrenhait correspondientes son %dn", sol1);
                    }
    else
    if (seleccion==2)
    {
                    printf("Introduce el valor (en fahrenhait)n");
                    scanf("%d", &fahrenhait);
                    sol2 = ((fahrenhait - 32)/1.8);
                    printf("Los grados celsius correspondientes son %dn",sol2);
                    }
   
    system ("pause");
    return (0);
}

Muchas gracias.