Ayuda con calculadora básica en C

Iniciado por wazausky, 10 Marzo 2013, 21:19 PM

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

wazausky

Buenas, miren, este programa me a dado lata, es sencillo.
Les pongo el programa y luego les digo que es lo que necesito :P


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

int main(int argc, char *argv[])
{
  float a, b, c;
  char o, r;
  while (1)
  {
        scanf("%f", &a);
        scanf("%s", &o);
        scanf("%f", &b);
        if (o=='+')
        {
        c=a+b;
        printf("%f", c);
        }
        if (o=='-')
        {
        c=a-b;
        printf("%f", c);
        }
        if (o=='*')
        {
        c=a*b;
        printf("%f", c);
        }
        if (o=='/')
        {
                  if (b==0)
                  {
                           printf("Division no definida para b = 0");
                           break;
                  }
                  else
                  {
                      c=a/b;
                      printf("%f", c);
                  }
        }
  }
}


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

leosansan

Cita de: wazausky en 10 Marzo 2013, 21:19 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 (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  float a, b, c;
  char o, r, entrada[81]="";
  while (1){
            fgets( entrada,80,stdin);
            sscanf( entrada, "%f%c%f ",&a,&o,&b );
            if (o=='+')
                printf("%g", a+b);
            if (o=='-')
                printf("%g", a-b);
            if (o=='*')
                printf("%g", a*b);
            if (o=='/')  {
                    if (b==0)  {
                        printf("Division no definida para b = 0");
                        break;
                    }
                    else
                        printf("%g", a/b);
            }
      }
   return 0;
}


Saluditos!. ...

rir3760

Cita de: wazausky en 10 Marzo 2013, 21:19 PMQuiero 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:
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:
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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language