| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
jorjeo
Registrado: 28 Feb 2013 Mensajes: 1
| Publicado: 28/02/2013 10:58 am | | | Título: ejercicio calculadora |
| Buenas a todos, gran foro.
Estoy empezando con c y tengo un ejercicio de hacer una calculadora. Todo bien, excepto el ultimo case, que me activa si quiero salir o no....pero aunque le diga que no se cierra el programa...alguien puede hecharme un cable?? Thank's---- #include<stdio.h> #include<math.h>
int menupral(){ printf("MENU:\n 1.suma\n 2.resta\n 3.multiplicacion\n 4.division\n 5.potencia\n 6.exponencial\n 7.raiz cuadrada\n 8.salir\n Que desea hacer?:"); int m; //declaramos la m (ejercicio con int.1,2,3,4,5 fflush(stdin); scanf("%i",&m); //escanea la m return m; //retornara la m que hayamos introducido }
int sum(int x,int y){ int s; s=x+y; return s; } int res(int x,int y){ return x-y; } int mult(int x,int y){ return x*y; } float div(float a,float b){ return a/b; }
int pot(int x,int y){ return pow(x,y); }
int expon(int x,int y){ return pow((x*10),y); } int ray(int x){ return sqrt(x); }
int num(int z){ printf("Introduzca el primer numero entero de la operacion:"); fflush(stdin); scanf("%i",&z); return z; } int numdos(int y){ printf("Introduzca el segundo numero entero de la operacion:"); fflush(stdin); scanf("%i",&y); return y; } char salir(){ char sn; printf("Esta seguro que desea salir? s/n"); fflush(stdin); scanf("%c",&sn); return sn; }
int main(){ int num1,num2,resultado; float num3,num4,resultado2;
do {
switch (menupral()){ case 1: //opcion mas reducida printf("Usted ha seleccionado realizar una resta.\n"); num1=num(num1);//con esta formula llamo a la funcion num creada previamente num2=numdos(num2);//con esta formula llamo a la funcion numdos creada previamente resultado=sum(num1,num2); printf("El resultado es %i",resultado); break; case 2: printf("Usted ha seleccionado realizar una resta.\n"); printf("Introduzca el primer numero entero de la operacion:"); fflush (stdin); scanf("%i",&num1); printf("Introduzca el segundo numero entero de la operacion:"); fflush (stdin); scanf("%i",&num2); resultado=res(num1,num2); printf("El resultado es %i",resultado); break; case 3: printf("Usted ha seleccionado realizar una multiplicacion.\n"); printf("Introduzca el primer numero entero de la operacion:"); fflush(stdin); scanf("%i",&num1); printf("Introduzca el segundo numero entero de la operacion:"); fflush(stdin); scanf("%i",&num2); resultado=mult(num1,num2); printf("El resultado es %i",resultado); break; case 4://en este case no me salen decimales....he creado nuevas variables por si existia lio...y tampoco printf("Usted ha seleccionado realizar una division.\n"); printf("Introduzca el primer numero de la operacion:"); fflush(stdin); scanf("%f",&num3); printf("Introduzca el segundo numero de la operacion:"); fflush(stdin); scanf("%f",&num4); resultado2=div(num3,num4); printf("El resultado es %f",resultado); break; case 5: printf("Usted ha seleccionado realizar una POTENCIA.\n"); num1=num(num1);//con esta formula llamo a la funcion num creada previamente num2=numdos(num2);//con esta formula llamo a la funcion numdos creada previamente resultado=pot(num1,num2); printf("El resultado es %i",resultado); break; case 6: printf("Usted ha seleccionado realizar un EXPONENCIAL.\n"); num1=num(num1);//con esta formula llamo a la funcion num creada previamente num2=numdos(num2);//con esta formula llamo a la funcion numdos creada previamente resultado=expon(num1,num2); printf("El resultado es %i",resultado); break; case 7: printf("Usted ha seleccionado realizar una RAIZ CUADRADA.\n"); printf("Introduzca un numero entero para la operacion:"); fflush(stdin); scanf("%i",&num1); resultado=ray(num1); printf("El resultado es %i",resultado); break; case 8: salir(); break;
default: printf("Este numero no pertenece a nunguna de las opciones"); break; }
}while (salir()=='s');
getch(); return 0; } |
| | Volver arriba | |  | leosan
Registrado: 19 Abr 2012 Mensajes: 730 Ubicación: GRAN CANARIA
| Publicado: 28/02/2013 1:46 pm | | | Título: Re: ejercicio calculadora |
| Demasiados fflush (stdin) para pescar un retorno solamente, NO se aconseja en principio su uso y además lo "pillas" con un getchar. .
En la división tenías "resultado", cuando debía ser "resultado2".
En el caso de la suma tienes indicado una resta, al imprimir el mensaje me refiero.
El "case" 8 había que completarlo.
La condición del while debe ser n en lugar de s.
Está bastante bien, cuasi-perfecto tu código, pero antes de terminar pica dos veces en donde pone "Code" y en medio de las dos etiquetas que te aparecen pegas el código. Y si lo sangras un poco será más fácil para todos el leerlo. Así como pongo se ve más "mejor", , lástima que el ancho lo estropee un poco. 
| Código: | #include<stdio.h> #include<math.h>
/****************************************************/ int menupral(void){ printf("\n\nMENU:\n 1.suma\n 2.resta\n 3.multiplicacion\n 4.division\n 5.potencia\n 6.exponencial\n 7.raiz cuadrada\n 8.salir\n Que desea hacer?:"); int m; //declaramos la m (ejercicio con int.1,2,3,4,5 scanf("%i",&m); //escanea la m return m; //retornara la m que hayamos introducido } /****************************************************/ int sum(int x,int y){ return x+y; } /****************************************************/ int res(int x,int y){ return x-y; } /****************************************************/ int mult(int x,int y){ return x*y; } /****************************************************/ float div(float a,float b){ return a/b; } int pot(int x,int y){ return pow(x,y); } /****************************************************/ int expon(int x,int y){ return pow((x*10),y); } /****************************************************/ int ray(int x){ return sqrt(x); } /****************************************************/ int num(int z){ printf("Introduzca el primer numero entero de la operacion:"); scanf("%i",&z); return z; } /****************************************************/ int numdos(int y){ printf("Introduzca el segundo numero entero de la operacion:"); scanf("%i",&y); return y; } /****************************************************/ char salir(void){ char sn; printf("\n\nEsta seguro que desea salir? s/n: "); getchar (); scanf("%c",&sn); return sn; } /****************************************************/ int main(){ int num1,num2,resultado; float num3,num4,resultado2; do { switch (menupral()){ case 1: //opcion mas reducida printf("Usted ha seleccionado realizar una suma.\n"); num1=num(num1);//con esta formula llamo a la funcion num creada previamente num2=numdos(num2);//con esta formula llamo a la funcion numdos creada previamente resultado=sum(num1,num2); printf("El resultado es %i",resultado); break; case 2: printf("Usted ha seleccionado realizar una resta.\n"); printf("Introduzca el primer numero entero de la operacion:"); scanf("%i",&num1); printf("Introduzca el segundo numero entero de la operacion:"); scanf("%i",&num2); resultado=res(num1,num2); printf("El resultado es %i",resultado); break; case 3: printf("Usted ha seleccionado realizar una multiplicacion.\n"); printf("Introduzca el primer numero entero de la operacion:"); scanf("%i",&num1); printf("Introduzca el segundo numero entero de la operacion:"); scanf("%i",&num2); resultado=mult(num1,num2); printf("El resultado es %i",resultado); break; case 4://en este case no me salen decimales....he creado nuevas variables por si existia lio...y tampoco printf("Usted ha seleccionado realizar una division.\n"); printf("Introduzca el primer numero de la operacion:"); scanf("%f",&num3); printf("Introduzca el segundo numero de la operacion:"); scanf("%f",&num4); resultado2=div(num3,num4); printf("El resultado es %f",resultado2); break; case 5: printf("Usted ha seleccionado realizar una POTENCIA.\n"); num1=num(num1);//con esta formula llamo a la funcion num creada previamente num2=numdos(num2);//con esta formula llamo a la funcion numdos creada previamente resultado=pot(num1,num2); printf("El resultado es %i",resultado); break; case 6: printf("Usted ha seleccionado realizar un EXPONENCIAL.\n"); num1=num(num1);//con esta formula llamo a la funcion num creada previamente num2=numdos(num2);//con esta formula llamo a la funcion numdos creada previamente resultado=expon(num1,num2); printf("El resultado es %i",resultado); break; case 7: printf("Usted ha seleccionado realizar una RAIZ CUADRADA.\n"); printf("Introduzca un numero entero para la operacion:"); scanf("%i",&num1); resultado=ray(num1); printf("El resultado es %i",resultado); break; case 8: if (salir()=='s') return 1; else menupral(); break; default: printf("Este numero no pertenece a nunguna de las opciones"); break; } }while (salir()=='n'); return 0; } /****************************************************/
|
Saluditos!. ... |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |