/
Inicio :: Foros

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

ejercicio calculadora

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



Registrado: 28 Feb 2013
Mensajes: 1

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

MensajePublicado: 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. Wink

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
      Í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