• Viernes 3 de Mayo de 2024, 05:05

Autor Tema:  Fallo en minicalculadora (Solucionado)  (Leído 1797 veces)

kalambre

  • Nuevo Miembro
  • *
  • Mensajes: 2
  • Nacionalidad: 00
    • Ver Perfil
Fallo en minicalculadora (Solucionado)
« en: Jueves 23 de Diciembre de 2010, 12:18 »
0
Buenas!, hace un par de días que ando trasteando con C, siguiendo tutoriales sencillos. El último ejercicio que he hecho es una minicalculadora en modo consola, entiendo el código que es exactamente igual al del tutorial pero falla algo que no se que es, el resultado de algunas operaciones no es el correcto, por ejemplo el de las sumas.

Comentando el código del resto de las operaciones y dejando solo la operación de suma el resultado que da es correcto  :think:

Bueno no me enrollo más, a ver si alguien me puede dar una pista de por donde van los tiros que me tiene algo desconcertado ya que uso el mismo editor y compilador que el tio del tutorial y no veo donde fallo.

Código: C
  1. #include"stdio.h"
  2.  
  3. int main()
  4. {
  5.  int numero1,numero2,resultado=0;
  6.  char operador;
  7.      
  8.      printf("Escriba el primer valor:  ");
  9.      scanf("%d",&numero1);
  10.  
  11.      printf("Operacion a realizar: +, -, *, / n");
  12.      operador = getche();
  13.      
  14.      printf("nEscriba el segundo valor:  ");
  15.      scanf("%d",&numero2);
  16.      
  17.      
  18.      if(operador == '+')
  19.      {
  20.      resultado = numero1 + numero2;
  21.      }
  22.      if(operador == '-');
  23.      {
  24.      resultado = numero1 - numero2;
  25.      }
  26.      if(operador == '*')
  27.      {
  28.      resultado = numero1 * numero2;
  29.      }
  30.      if(operador == '/');
  31.      {
  32.      resultado = numero1 / numero2;
  33.      }
  34.      printf("nResultado: %d %c %d = %d",numero1,operador,numero2,resultado);
  35.      
  36. }
  37.  

Un saludo y gracias por vuestro tiempo.  :hola:
« última modificación: Jueves 23 de Diciembre de 2010, 13:18 por kalambre »

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Principiante - fallo en minicalculadora
« Respuesta #1 en: Jueves 23 de Diciembre de 2010, 12:40 »
0
La verdad no veo por qué puede ser, pero te dejo un par de consejos:

  • No veo la utilidad de usar getche(), que no es estándar. Si ya usas scanf, usa scanf para todo.
  • En vez de los if usa un switch, es más limpio y menos propenso a errores de lógica.
  • main devuelve un int, así que asegúrate de ponerle el return correspondiente.

diego.martinez

  • Miembro MUY activo
  • ***
  • Mensajes: 297
    • Ver Perfil
Re: Principiante - fallo en minicalculadora
« Respuesta #2 en: Jueves 23 de Diciembre de 2010, 12:43 »
0
es el ; que has puesto en todos los if menos en el de suma.

Cuando se ejecuta un IF se ejecuta el siguiente bloque o instruccion. Con ese ; indicas que no hay instruccion a ejecutar. Despues, se encuentra con un bloque y lo ejecuta. Luego te dara el resultado de todas las operaciones menos suma.

kalambre

  • Nuevo Miembro
  • *
  • Mensajes: 2
  • Nacionalidad: 00
    • Ver Perfil
Re: Principiante - fallo en minicalculadora
« Respuesta #3 en: Jueves 23 de Diciembre de 2010, 13:18 »
0
Hola m0skit0, gracias por la información que me has dado!

La razón por la que he usado getche() en vez de scanf() es que por alguna extraña razón al introducir el operador el programa tira error y sale la pantalla para cerrarlo. Estoy en Windows 7 32bits, no sé si tendrá algo que ver.
Tomo nota sobre los 'switches', me lo miraré aunque no me quiero saltar lecciones del tutorial, espero tener una curva de aprendizaje más o menos equilibrada  :P
Respecto al 'int main()' lo he sustituido por 'void main()' y 'main()' a secas para que no devuelva nada, pero el problema con las operaciones persiste.

Hola diego.martinez!. Muchísimas gracias, he quitado los puntos y comas y el resultado de las operaciones ya es el correcto. Problema solucionado.

Llevaba horas mirando el código mientras me decía para mí mismo "no puedes ser tan zopenco!" xD, ya veo que sí se me escapaba algo, gajes del principiante supongo  :comp:

Muchas gracias a los dos por la ayuda, muy amables, si me topo con algún problemilla vendré a molestaros  :lol:

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Fallo en minicalculadora (Solucionado)
« Respuesta #4 en: Jueves 23 de Diciembre de 2010, 13:36 »
0
Cita de: "kalambre"
La razón por la que he usado getche() en vez de scanf() es que por alguna extraña razón al introducir el operador el programa tira error y sale la pantalla para cerrarlo. Estoy en Windows 7 32bits, no sé si tendrá algo que ver.
Código: C
  1. scanf("%c", &operador);
  2.