Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: wazausky en 10 Marzo 2013, 21:19 pm



Título: Ayuda con calculadora básica en C
Publicado por: wazausky en 10 Marzo 2013, 21:19 pm
Buenas, miren, este programa me a dado lata, es sencillo.
Les pongo el programa y luego les digo que es lo que necesito :P

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.  float a, b, c;
  7.  char o, r;
  8.  while (1)
  9.  {
  10.        scanf("%f", &a);
  11.        scanf("%s", &o);
  12.        scanf("%f", &b);
  13.        if (o=='+')
  14.        {
  15.        c=a+b;
  16.        printf("%f", c);
  17.        }
  18.        if (o=='-')
  19.        {
  20.        c=a-b;
  21.        printf("%f", c);
  22.        }
  23.        if (o=='*')
  24.        {
  25.        c=a*b;
  26.        printf("%f", c);
  27.        }
  28.        if (o=='/')
  29.        {
  30.                  if (b==0)
  31.                  {
  32.                           printf("Division no definida para b = 0");
  33.                           break;
  34.                  }
  35.                  else
  36.                  {
  37.                      c=a/b;
  38.                      printf("%f", c);
  39.                  }
  40.        }
  41.  }
  42. }
  43.  

Como veran, el programa pide meter digito por digito, es decir, ingresar "a" y dar enter, luego ingresar la operacion, ya sea "+", "-", "*" o "/" y dar enter, despues ingresar "b" y dar enter.
Quiero que sea capaz de ingresar "a", la operacion (ya sea "+", "-", "*" o "/") y "b" en un solo paso.
Por favor y gracias :/


Título: Re: Ayuda con calculadora básica en C
Publicado por: leosansan en 10 Marzo 2013, 22:02 pm
............................................................
Como veran, el programa pide meter digito por digito, es decir, ingresar "a" y dar enter, luego ingresar la operacion, ya sea "+", "-", "*" o "/" y dar enter, despues ingresar "b" y dar enter.
Quiero que sea capaz de ingresar "a", la operaciony "b" en un solo paso.
Por favor y gracias :/

Para eso está la función sscanf. Por ejemplo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.  float a, b, c;
  7.  char o, r, entrada[81]="";
  8.  while (1){
  9.            fgets( entrada,80,stdin);
  10.            sscanf( entrada, "%f%c%f ",&a,&o,&b );
  11.            if (o=='+')
  12.                printf("%g", a+b);
  13.            if (o=='-')
  14.                printf("%g", a-b);
  15.            if (o=='*')
  16.                printf("%g", a*b);
  17.            if (o=='/')  {
  18.                    if (b==0)  {
  19.                        printf("Division no definida para b = 0");
  20.                        break;
  21.                    }
  22.                    else
  23.                        printf("%g", a/b);
  24.            }
  25.      }
  26.   return 0;
  27. }
  28.  

Saluditos!. ...(http://i1280.photobucket.com/albums/a497/leosansan/31grandes_zps68b8b90a.gif)


Título: Re: Ayuda con calculadora básica en C
Publicado por: rir3760 en 12 Marzo 2013, 03:03 am
Quiero que sea capaz de ingresar "a", la operacion (ya sea "+", "-", "*" o "/") y "b" en un solo paso.
Si te refieres a usar una sola llamada a función basta con:
Código
  1. scanf("%f %c %f", &a, &o, &b);

Si te refieres a introducir los operandos y el operador en la misma linea no hay problema, solo se tiene que introducir, por ejemplo:
Código:
2 + 2

Por ultimo tu programa tiene un error importante: para leer un carácter con scanf se debe utilizar " %c", no es correcto "%s" ya que este es para cadenas (una palabra).

Un saludo