• Domingo 15 de Diciembre de 2024, 19:06

Autor Tema:  Problema Con Calculadora Básica En C  (Leído 2733 veces)

MoKoLoKo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Problema Con Calculadora Básica En C
« en: Sábado 1 de Marzo de 2008, 13:16 »
0
Hola, estoy empezando a programar en C de forma más o menos autodidacta (diría que mi profesor sabe aún menos que yo...  <_<  ) y me he quedado atascado en un programa de calculadora, que haga sumas, restas, multiplicaciones y divisiones.

La estructura la tengo más o menos clara pero aunque las sumas y restas van bien, las multiplicaciones y divisiones dan resultados muy extraños (5*5=580, 12/2=587 ¿?).

Código: Text
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <conio.h>
  4.  
  5. int main()
  6. {
  7. int a,b,rs;
  8. char signo,s,r,m,d,op;
  9. s='+'; r='-'; m='*'; d='/';
  10. printf ("Calculadora\n");
  11. inicio:
  12. printf ("\nIntroduce un numero, el signo de la operacion (+, -, /, *) y el segundo numero\n");
  13. scanf ("%i", &a);
  14. getche ("%c", &signo);
  15. scanf ("%i", &b);
  16. if (signo=s)
  17.    {
  18.    rs=a+b;
  19.    goto ver;
  20.    }
  21. if (signo=r)
  22.    {
  23.    rs=a-b;
  24.    goto ver;
  25.    }
  26. if (signo=d)
  27.    {
  28.    if (b==0)
  29.       {
  30.       printf ("Imposible dividir entre cero\n");
  31.       system ("PAUSE");
  32.       goto inicio;
  33.       }
  34.    else
  35.        {
  36.        rs=a/b;
  37.        goto ver;
  38.        }
  39.    }
  40. if (signo=m)
  41.    {
  42.    rs=a*b;
  43.    goto ver;
  44.    }
  45. else
  46.     {
  47.     printf ("Error, operación no valida o error de sintaxis\n");
  48.     system ("PAUSE");
  49.     }
  50. ver:
  51. printf ("%i\n", rs);
  52. system ("PAUSE");
  53. return 0;
  54. }
  55.  

El compilador que uso es Dev-C++

Gracias por adelantado :hola:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema Con Calculadora Básica En C
« Respuesta #1 en: Sábado 1 de Marzo de 2008, 13:20 »
0
No mire mucho el codigo pero las comparacion estan mas, = es una ASIGNACION y == es una COMPARACION.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

MoKoLoKo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Problema Con Calculadora Básica En C
« Respuesta #2 en: Sábado 1 de Marzo de 2008, 13:41 »
0
Gracias por responder tan rápido :D

He probado a cambiar las líneas de signo=x por signo==x o por signo=='*' pero con ese cambio siempre salta el mensaje de operación no valida...

Además me he dado cuenta de que el programa con el código que he puesto no reconoce los símbolos de multiplicación y división ya que los resultados de 1*1, 1/1 y 1q1 son el mismo (576), y no salta nunca el mensaje de operación no válida.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Problema Con Calculadora Básica En C
« Respuesta #3 en: Sábado 1 de Marzo de 2008, 14:03 »
0
El codigo que pusiste como te dije esta mal, tenes que comparar y no asignar, ademas de esos cambios asi con el VC++ 8 (2005) funciona:

Código: Text
  1.  
  2. scanf ("%i\r\n", &a);
  3. scanf ("%c\r\n", &signo);
  4. scanf ("%i", &b);
  5.  
  6.  

Proba, depura tu programa ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

MoKoLoKo

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Problema Con Calculadora Básica En C
« Respuesta #4 en: Sábado 1 de Marzo de 2008, 23:33 »
0
Ya conseguí que funcionara, usé switch en vez de if-else y quedo bastante más claro el código, además tuve que añadir la libreria math.h

Código: Text
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <math.h>
  5.  
  6. int main()
  7. {
  8. float a,b,rs;
  9. char signo, op;
  10. printf ("Calculadora\n");
  11. inicio:
  12. printf ("Introduce un numero, el signo de la operacion (+, -, /, *) y el segundo numero\n");
  13. scanf ("%f", &a);
  14. scanf ("%c", &signo);
  15. scanf ("%f", &b);
  16. switch ( signo )
  17.        {
  18.        case '+':
  19.             rs=a+b;
  20.             break;
  21.        case '-':
  22.             rs=a-b;
  23.             break;
  24.        case '*':
  25.             rs=a*b;
  26.             break;
  27.        case '/':
  28.             if (b==0)
  29.                {
  30.                printf ("Imposible dividir entre 0\n");
  31.                goto inicio;
  32.                }
  33.             rs=a/b;
  34.             break;
  35.        default:
  36.             printf ("Error de sintaxis\n");
  37.        }
  38. printf ("%f\n", rs);
  39. system ("PAUSE\n");
  40. system ("CLS");
  41. goto inicio;
  42. return 0;
  43. }
  44.  

Gracias por la ayuda :comp: