/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Consulta de una calculadora aplicando funciones en C

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
rodowushu



Registrado: 09 May 2011
Mensajes: 18

MensajePublicado: 09/05/2011 7:12 pm
Título: Consulta de una calculadora aplicando funciones en C

Hola chicos soy nuevo en la comunidad y tmb en la programacion en C.
Me dieron un ejercicio en la cual tenia q hacer una calculadora aplicando funciones, por cierto esta calculadora no divide xD, no estaba en el enunciado. Bueno yendo al grano, para hacer esto me base en el curso de gorka urrutia, en cual me fue bastante bien pero me quede con una duda.

aqui les paso el codigo.

Código:


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

float Suma()
      {
            float a,b,S;
            printf("Ingrese los terminos\n");
            scanf("%f",&a);
            printf("+\n");
            scanf("%f",&b);
            S=a+b;
            return S;
      }

float Resta()
      {
            float a,b,R;
            printf("Ingrese los terminos\n");
            scanf("%f",&a);
            printf("-\n");
            scanf("%f",&b);
            R=a-b;
            return R;
      }

float Multiplicacion()
      {
            float a,b,M;
            printf("Ingrese los terminos\n");
            scanf("%f",&a);
            printf("*\n");
            scanf("%f",&b);
            M=a*b;
            return M;
      }

float Potencia()
      {
            float a,b,n,P=1;
            int i=1;
            printf("Ingrese los terminos\n Base:\n");
            scanf("%f",&n);
            printf("Exponente\n");
            scanf("%f",&a);
            while(i<=a)
               {
                  P=P*n;
                  i++;
               }
            return P;
      }

float Porcentaje()
      {
           float Porc,a,b;
           printf("Ingrese los terminos\n");
           scanf("%f",&a);
           printf("*\n");
           scanf("%f",&b);
           printf("Divido en 100\n");
           Porc=(a*b)/100;
           return Porc;
      }


int main()
{
    int x,b;
    float Suma,Resta,Multiplicacion,Porcentaje,Potencia;

    printf("\t\t Bienvenidos a la Calculadora del siglo X!! xD\n\n\n");
    printf("Desea realizar algun calculo? Press 1(SI), Press cualquier tecla (NO)\n");
    scanf("%d",&x);
    system("cls");

    while(x==1)
       {
           printf("Que operaciones quiere realizar?\n 1-Suma\n 2-Resta\n 3-Multiplicacion\n 4-Porcentaje\n 5-Potencia\n\n\n");
           scanf("%d",&b);
           system("cls");
           while(b<1 || b>5)
              {
                  printf("Error!! Ingrese de nuevo\n");
                  scanf("%d",&b);
                  fflush(stdout);
              }
           switch (b)
              {
               case 1:
                    system("cls");
                    float Suma();
                    printf("El valor de la suma es %f:\n\n",Suma());
                    break;
               case 2:
                    system("cls");
                    float Resta();
                    printf("El valor de la resta es %f:\n\n",Resta());
                    break;
               case 3:
                    system("cls");
                    float Multiplicacion();
                    printf("El valor de la multiplicacion es %f:\n\n",Multiplicacion());
                    break;
               case 4:
                    system("cls");
                    float Porcentaje();
                    printf("El valor del porcentaje es %f:\n\n",Porcentaje());
                    break;
               case 5:
                    system("cls");
                    float Potencia();
                    printf("El valor de la potencia es %f:\n\n",Potencia());
                    break;
               }
           printf("Desea hacer otro calculo? 1(SI), cualquier tecla (NO) ");
           fflush(stdout);
           scanf("%d",&x);
           system("cls");
       }

system("PAUSE");
return 0;
}




Si bien este codigo me anda de 10, pero si yo quiero en la funcion main convocar a una funcion cualquiera, con una variable auxiliar el compilador me dice "el objeto llamado no es una funcion". ejemplo voy a cortar el codigo para q no sea tan largo.

switch (b)
{
case 1:
system("cls");
float aux = Suma();
printf("El valor de la suma es %f:\n\n",Suma());
break;
.
.
.
}

obviamente a la vble aux la declaro en main, me pasa eso con cualquiera q llame,probe releyendo el curso de gorka y consultando con otros chicos de la facu y me dijeron que nunca les paso eso.
Quizas a lo mejor es un tontera pero bueno, se los dejo a uds que opinan, cual seria el problema.
les mando un saludo y gracias por su tiempo!
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7527
Ubicación: Mexico

MensajePublicado: 10/05/2011 5:41 am
Título:

El problema se debe a tres declaraciones utilizando el mismo nombre que tienes en el programa por cada operacion. Tal como esta funciona debido a que la segunda declaracion seria un error pero se corrige (en parte) con la tercera.

Por ejemplo en el caso de la operacion suma:
Código:
float Suma() /* 1 */
{

/* ... */

int main()
{
   int x, b;
   float Suma, ...; /* 2 */

/* ... */

   switch (b) {
   case 1:
      system ("cls");
      float Suma(); /* 3 */
      printf ("El valor de la suma es %f:\n\n", Suma() );

En "1" declaras a "Suma" como el nombre de una funcion sin argumentos, en "2" declaras un objeto con el mismo nombre pero de tipo float, en la tercera se corrige (a medias) al declarar el nombre como una funcion con un tipo no determinado de argumentos.

El error que mencionas se genera debido a que eliminas la tercera declaracion, con ello "Suma" se refiere a la declaracion "2" y al ser esta un objeto de tipo float el compilador se queja de que no es una funcion.

Para corregirlo basta con seguir las buenas costumbres: declara las funciones antes de cualquier definicion indicando su numero y tipo de argumentos junto con el valor de retorno (a ese tipo de declaracion se le conoce como prototipo). Tambien deberias evitar el uso del mismo nombre en diferentes ambitos (declaraciones anidadas como en tu caso donde el nombre utilizado es el mismo).

Tambien habria que sacar la lectura de los datos de las funciones primero porque no es parte de la operacion de la funcion y segundo porque asi reduces el tamaño del programa.

El programa corregido (C estandar):
Código:
#include <stdio.h>

/* Prototipos de las funciones */
float Suma(void);
float Resta(void);
float Multiplicacion(void);
float Porcentaje(void);
float Potencia(void);

int main(void)
{
   int x, b;
   
   printf ("\t\t Bienvenidos a la Calculadora del siglo X!! xD\n\n\n");
   printf ("Desea realizar algun calculo? Press 1(SI), Press cualquier tecla (NO)\n");
   scanf ("%d", &x);
   
   while (x == 1) {
      printf ("Que operaciones quiere realizar?\n 1-Suma\n 2-Resta\n 3-Multiplicacion\n 4-Porcentaje\n 5-Potencia\n\n\n");
      scanf ("%d", &b);
      while (b < 1 || b > 5) {
         printf ("Error!! Ingrese de nuevo\n");
         scanf ("%d", &b);
      }
     
      switch (b) {
      case 1:
         printf ("El valor de la suma es %f:\n\n", Suma() );
         break;
      case 2:
         printf ("El valor de la resta es %f:\n\n", Resta() );
         break;
      case 3:
         printf ("El valor de la multiplicacion es %f:\n\n", Multiplicacion() );
         break;
      case 4:
         printf ("El valor del porcentaje es %f:\n\n", Porcentaje() );
         break;
      case 5:
         printf ("El valor de la potencia es %f:\n\n", Potencia() );
         break;
      }
     
      printf ("Desea hacer otro calculo? 1(SI), cualquier tecla (NO) ");
      scanf ("%d", &x);
   }
   
   return 0;
}

float Suma(void)
{
   float a, b, S;
   printf ("Ingrese los terminos\n");
   scanf ("%f", &a);
   printf ("+\n");
   scanf ("%f", &b);
   S = a + b;
   return S;
}

float Resta(void)
{
   float a, b, R;
   printf ("Ingrese los terminos\n");
   scanf ("%f", &a);
   printf ("-\n");
   scanf ("%f", &b);
   R = a - b;
   return R;
}

float Multiplicacion(void)
{
   float a, b, M;
   printf ("Ingrese los terminos\n");
   scanf ("%f", &a);
   printf ("*\n");
   scanf ("%f", &b);
   M = a * b;
   return M;
}

float Potencia(void)
{
   float a, n, P = 1;
   int i = 1;
   
   printf ("Ingrese los terminos\n Base:\n");
   scanf ("%f", &n);
   printf ("Exponente\n");
   scanf ("%f", &a);
   while (i <= a) {
      P = P * n;
      i++;
   }
   
   return P;
}

float Porcentaje(void)
{
   float Porc, a, b;
   printf ("Ingrese los terminos\n");
   scanf ("%f", &a);
   printf ("*\n");
   scanf ("%f", &b);
   printf ("Divido en 100\n");
   Porc = (a * b) / 100;
   return Porc;
}


El programa se puede mejorar bastante ya que las operaciones son sencillas como para no requerir el uso de funciones (o tal vez tu profesor quiera que practiquen con ellas). Se pueden eliminar variables de las funciones, etc.

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
Volver arriba
rodowushu



Registrado: 09 May 2011
Mensajes: 18

MensajePublicado: 10/05/2011 12:52 pm
Título:

AAhhh muchas gracias!. Si la idea del profesor es que practiquemos con funciones, ahora te entendi algunas cosas. por ejemplo en donde dices
"El problema se debe a tres declaraciones utilizando el mismo nombre que tienes en el programa por cada operacion. Tal como esta funciona debido a que la segunda declaracion seria un error pero se corrige (en parte) con la tercera.. En este caso pense, que a la funcion tambien la tenia que declarar en main para que compile y cuando la convocaba pense q tambien se referia al main. Conclusión de esta parte osea una vez declarada una funcion no es necesario volverla a declarar en main, ahora entiendo por q no me la convocaba con un auxiliar.
Lo que no entiendo bien aca es declara las funciones antes de cualquier definicion indicando su numero y tipo de argumentos junto con el valor de retorno. ¿Pero q no estan declaradas al comienzo? y a que te refieres con el argumento? osea vi q en las funciones al final le pusiste un (void) a ese argumento te refieres? por q va eso? no se supone q devuelve un valor? ya me marie... jaja.
otra cosa como q variable se puede eliminar de las funciones?.
Y por ultimo vi q en el codigo corregido quitaste el fflush q le puse, si bien se lo mande asi por q si xD jaja, tengo entendido q es para limpiar el buffer, pero no me quedo claro bien ese tema osea en q momento va un fflush(stdin) y un fflush(stdout), vi que tambien en algunos otros ejercicios que hice si o si me requeria en fflush y en otros no, que eran practicamente parecidos.

Bueno muchas gracias otras vez y perdon por la molestia.
te mando un saludo.
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7527
Ubicación: Mexico

MensajePublicado: 10/05/2011 2:09 pm
Título:

rodowushu escribió:
Lo que no entiendo bien aca es declara las funciones antes de cualquier definicion indicando su numero y tipo de argumentos junto con el valor de retorno. ¿Pero q no estan declaradas al comienzo?

Si ya que toda definicion de una funcion (indicando su cuerpo) tambien es una declaracion.

Pero eso te puede meter en problemas. Imagina por ejemplo que tienes tres funciones de esta forma:
Código:
int a(void)
{
   return 1; /* Por decir algo */
}

int b(void)
{
   return a(); /* requiere de a() */
}

int c(void)
{
   return b(); /* requiere de b() que requiere de a() */
}

Semejante programa funciona pero si por alguna razon cambias el orden en que aparecen las funciones se generaran mensajes de error del tipo "funcion no definida". Eso limita el programa en una forma que no deberia.

Si en su lugar utilizas prototipos:
Código:
/* Prototipos */
int a(void);
int b(void);
int c(void);

/* ... */

/* El orden en que aparecen las funciones ya no importa */

int c(void)
{
   return b; /* requiere de b() que requiere de a() */
}

int b(void)
{
   return a(); /* requiere de a() */
}

int a(void)
{
   return 1; /* Por decir algo */
}

Puedes colocar las funciones como quieras sin tener problemas (esa es la idea).


rodowushu escribió:
y a que te refieres con el argumento? osea vi q en las funciones al final le pusiste un (void) a ese argumento te refieres? por q va eso? no se supone q devuelve un valor? ya me marie... jaja.

En C cuando declaras una funcion con solo:
Código:
int a();

Se asume que la funcion acepta (en la llamada) un numero no definido de argumentos y eso puede llevar a errores. En su lugar si la funcion no los acepta se debe indicar explicitamente con "void":
Código:
int a(void);



rodowushu escribió:
otra cosa como q variable se puede eliminar de las funciones?.

Todas las variables dentro de las funciones donde almacenas de forma temporal el resultado, por ejemplo la funcion "Suma" es:
Código:
float Suma(void)
{
   float a, b, S;
   printf ("Ingrese los terminos\n");
   scanf ("%f", &a);
   printf ("+\n");
   scanf ("%f", &b);
   S = a + b;
   return S;
}


La variable "S" la puedes eliminar sin problemas, de esta forma:
Código:
float Suma(void)
{
   float a, b;
   printf ("Ingrese los terminos\n");
   scanf ("%f", &a);
   printf ("+\n");
   scanf ("%f", &b);
   return a + b; /* Calcula "a + b" y lo retorna */
}


Si revisas el programa te daras cuenta que casi todas las operaciones son binarias (requieren de dos operandos) y sus nombres (salvo el operador de potencia) son iguales. Eso lleva a sacar los operandos y la lectura de ellos de las funciones y asi eliminarias dos variables de cada funcion (mas el proceso de lectura).

Hay varios temas recientes y similares sobre programas sencillos sobre calculadoras. Puedes revisarlos para tener una idea de los cambios que requiere tu programa.


rodowushu escribió:
Y por ultimo vi q en el codigo corregido quitaste el fflush q le puse, si bien se lo mande asi por q si xD jaja, tengo entendido q es para limpiar el buffer, pero no me quedo claro bien ese tema osea en q momento va un fflush(stdin) y un fflush(stdout), vi que tambien en algunos otros ejercicios que hice si o si me requeria en fflush y en otros no, que eran practicamente parecidos.

La funcion "fflush" solo puede utilizarse con streams de salida como "stdout" (la salida estandar) y "stderr" (la salida estandar para errores). Esa funcion se describe en detalle en el tema ¿para que sirve la funcion fflush( stdout ); ?.

Una "mala practica" comun en C y C++ es utilizar "fflush(stdin)" para descartar el contenido del bufer de la entrada estandar (stdin). El problema con ello es que solo funciona con ciertos compiladores como los de Borland (en realidad es peor: es "comportamiento no definido" o "cualquier cosa puede pasar"). Pero en otros entornos como Linux no sirve.

Si apenas empiezas es mejor enfocarse en C/C++ estandar ya que esta garantizado a "funcionar" sin importar compilador ni SO.

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
Volver arriba
rodowushu



Registrado: 09 May 2011
Mensajes: 18

MensajePublicado: 10/05/2011 2:22 pm
Título:

muchisimas gracias!!!! ya me quedo claro el tema. Voy a seguir tus consejos.

un saludo
Volver arriba
rodowushu



Registrado: 09 May 2011
Mensajes: 18

MensajePublicado: 10/05/2011 6:52 pm
Título:

rir3760 sabes tanto el codido tuyo como el mio tienen el mismo error, y este se produce cuando despues q hacemos un calculo y apretamos una tecla cualquiera se produce un bucle infinito y no cierra la consola, mas sin embargo si apretas un numero distinto de "1" se cierra normalmente. Estuve revisando el codigo q me mandaste y no le encontre la falla, no es por facilitarme el trabajo pero si es asi a q se debe?.
te mando un saludo y gracias otra vez
Volver arriba
Pantalàimon_



Registrado: 17 Jul 2007
Mensajes: 1345

MensajePublicado: 11/05/2011 12:34 am
Título:

Lo que ocurre es que scanf("%d",&n) lee una cadena en forma de número entero y deja el resto pendiente para leer. Pongo unos ejemplos de entradas de teclado posibles ante un scanf("%d",&n):

Código:
123abracadabara(Enter)

Lee el número 123 y se lo asigna a n. Deja abracadabra(Enter) pendiente para leer ya que no es un entero.
Código:
123(Enter)

Lee el número 123 y se lo asigna a n. Deja (Enter) para leer.
Código:
abracadabra(Enter)

No lee nada pues ya el primer caracter no es numérico. No se le asigna ningun número a n porque no hay número que asignar. Deja abracadabra(Enter) pendiente para leer.

Una vez sabido esto vamos a ver que ocurre en el programa. Al inicio la pantalla muestra:
Código:
       Bienvenidos a la Calculadora del siglo X!! xD


Desea realizar algun calculo? Press 1(SI), Press cualquier tecla (NO)

Le pasamos la entrada:
Código:
1(Enter)

Ahora x == 1
Por pantalla se muestra:
Código:
1
Que operaciones quiere realizar?
 1-Suma
 2-Resta
 3-Multiplicacion
 4-Porcentaje
 5-Potencia




Le pasamos la entrada;
Código:
2(Enter)

Ahora b == 2, entonces no cumple (b < 1 || b > 5) y se va directo al switch para hacer la operación resta.
Supongamos que introcimos los terminos 5 y 3. Entonces lo que saldrá por la pantalla será:
Código:
2
Ingrese los terminos
5
-
3
El valor de la resta es 2.000000:

Desea hacer otro calculo? 1(SI), cualquier tecla (NO)

Bien, y aquí viene el problema. Esta petición de datos se corresponde al scanf() que hay al final del todo del while.
Si pasamos la entrada:
Código:
a(Enter)

scanf no leerá nada ya que no hay número y entonces a x no se le asignará nada, con lo cual seguirá con el valor x == 1 y se repetirá el bucle. Pero ahí no acaba todo pues a(Enter) estará pendiente de leerse para el siguiente scanf que encuentre:
Código:
      printf ("Que operaciones quiere realizar?\n 1-Suma\n 2-Resta\n 3-Multiplicacion\n 4-Porcentaje\n 5-Potencia\n\n\n");
      scanf ("%d", &b);

scanf() recibirá la cadena pendiente a(Enter) que igualmente no se leerá porque no es un número. Además b continuará valiendo 2 pues no se le ha asignado ningún valor nuevo. Así que dejará pendiente para leer en el próximo scanf() la cadena a(Enter).

Ocurrirá lo mismo en la operación de lectura de los tésminos de la resta y volverá otra vez a intentar leer x. Y así continuamente habrá un bucle infinito porque nunca se renovarán los valores de las variables porque siempre se leerá la misma cadena a(Enter) que al no ser númerica siempre se dejará pendiente para que la lea el siguiente scanf().

Espero que se haya entendido el por qué del error. ¿Se te ocurre alguna posible solución ?

Un saludo!
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7527
Ubicación: Mexico

MensajePublicado: 11/05/2011 6:42 am
Título:

Como ya te comento Pantalàimon_ es una combinacion de error logico mas la falta de validacion de datos.

Para que el programa funcione correctamente (a expensas de lo que decida el usuario) se deben cambiar las instrucciones a:
Código:
printf("Desea realizar algun calculo? 1 (SI), 0 (NO)\n");
scanf ("%d", &x);

Pero solo seria un parche (y ya te diste cuenta del bucle infinito).

El problema se debe, de nuevo, a la falta de validacion. Siendo estrictos la unica forma a prueba de errores para leer un numero en C es mediante la combinacion de fgets para leer una linea de texto seguido de strtol/strtoul/strtod para validar el numero contenido en esta. El problema es, para un principiante, es mejor dejar eso para despues (esas funciones requieren de un doble puntero mas el uso de errno).

Un ejemplo de ello es (C estandar):
Código:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <limits.h>
#include <errno.h>

#define NUM_CHARS 256

int validar_int(char const *linea, int *num);

int main(void)
{
   char linea[NUM_CHARS];
   int num;
   
   printf("Introduce un numero entero (signed int): ");
   fflush(stdout);
   if (fgets(linea, NUM_CHARS, stdin) == NULL)
      return EXIT_FAILURE;
   
   if (validar_int(linea, &num))
      printf("OK. El numero es %d\n", num);
   else
      puts("Error!");
   
   return EXIT_SUCCESS;
}


int validar_int(char const *linea, int *num)
{
   char *ch;
   long res;
   
   /* Descartamos el ultimo error y tratamos de convertir la linea */
   errno = 0;
   res = strtol(linea, &ch, 0);
   
   /* A continuacion verificamos ... */
   
   /* ... si al menos un caracter pudo convertirse con exito */
   if (res == 0 && ch == linea)
      return 0;
   
   /* ... si el numero esta en el rango valido (signed long) */
   if (errno == ERANGE && (res == LONG_MAX || res == LONG_MIN))
      return 0;
   
   /* ... si el resto de la linea es espacio blanco */
   while (isspace(*ch))
      ch++;
   if (*ch != '\0')
      return 0;
   
   /* ... si el numero esta en el rango valido (signed int) */
   if (res > INT_MAX || res < INT_MIN)
      return 0;
   
   /* Si todo se cumple el numero introducido es valido */
   *num = res;
   
   return 1;
}


La otra forma es limitarse al uso de scanf/fscanf verificando su valor de retorno seguido del descarte del resto de la linea. Un ejemplo sencillo utilizando scanf (C estandar):
Código:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int num;
   int ok;
   int ch;
   
   do {
      printf("Introduce un numero (1 a 9): ");
      fflush(stdout);
      ok = scanf("%d", &num) == 1 && num >= 1 && num <= 9;
     
      /* Descartamos el resto de la linea */
      while ((ch = getchar()) != EOF && ch != '\n')
         ;
   }while (!ok);
   
   printf("El numero es %d\n", num);
   
   return EXIT_SUCCESS;
}


Solo hay que tomar ese ejemplo con "pinzitas" ya que una entrada como "123mn" la tomaria como valida ademas no tiene validacion en caso de que la entrada estandar (stdin) se quede vacia o falle.

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
Volver arriba
Pantalàimon_



Registrado: 17 Jul 2007
Mensajes: 1345

MensajePublicado: 11/05/2011 7:31 am
Título:

Yo pensaba en una solución sin entrar el tema de limpiar buffers de entrada o controlar mediante el valor de retorno de scanf() que sería:

Código:

   while (x == 1) {

      /* ... */

      printf ("Desea hacer otro calculo? 1(SI), cualquier tecla (NO) ");
      x = 0;
      scanf ("%d", &x);
   }

Aunque esta manera de solucionarlo me parece que no serviría en el caso de leer la variable b.

Un saludo!
Volver arriba
rodowushu



Registrado: 09 May 2011
Mensajes: 18

MensajePublicado: 11/05/2011 10:54 am
Título:

Gracias muchachos, ya se me quedo mas clara la idea, en lo q me dice rir3760.

Cita:
El problema se debe, de nuevo, a la falta de validacion. Siendo estrictos la unica forma a prueba de errores para leer un numero en C es mediante la combinacion de fgets para leer una linea de texto seguido de strtol/strtoul/strtod para validar el numero contenido en esta. El problema es, para un principiante, es mejor dejar eso para despues (esas funciones requieren de un doble puntero mas el uso de errno).


Por ahora como tu dices, me voy a limitar a usar lo q se, ya q a la combinacion de fgets y el resto no lo vimos, recien estamos comenzando a entrar en C.

y para corregir el error seria como dice Pantalàimon_

Código:
while (x == 1) {

      /* ... */

      printf ("Desea hacer otro calculo? 1(SI), cualquier tecla (NO) ");
      x = 0;
      scanf ("%d", &x);
   }


y para la variable b

Código:
 while (x == 1) {
      printf ("Que operaciones quiere realizar?\n 1-Suma\n 2-Resta\n 3-Multiplicacion\n 4-Porcentaje\n 5-Potencia\n\n\n");
      b=0;
      scanf ("%d", &b);


Ya presentamos el ejercicio ahora nos pieron hacerla real como una calculadora de mano asi tal cual, asi q ahora me voy a poner a hacer eso luego cuando la tenga la subo.

Un saludo y gracias nuevamente.
Volver arriba
Pantalàimon_



Registrado: 17 Jul 2007
Mensajes: 1345

MensajePublicado: 11/05/2011 2:38 pm
Título:

rodowushu escribió:
y para la variable b

Código:
 while (x == 1) {
      printf ("Que operaciones quiere realizar?\n 1-Suma\n 2-Resta\n 3-Multiplicacion\n 4-Porcentaje\n 5-Potencia\n\n\n");
      b=0;
      scanf ("%d", &b);


¿Estas seguro?

Prueba la siguiente entrada:

Código:
1(Enter)
1(Enter)
1(Enter)
1(Enter)
1(Enter)
a(Enter)


Un saludo!
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com