SketchUp

Empujar y tirar, rectángulo, arco, círculo, guía, crear grupo, pintar

SketchUp

cambiar opacidad

AutoCAD: Practica 7

Círculo, polígono circunscrito, LTScale

AutoCAD: Practica 8

Circunferencia TTR, tangente, recorar

sábado, 22 de noviembre de 2014

Definición y llamada de funciones: Calculadora en C.


/*Blas Gómez Mora*/
/* Calculadora en C*/
 
#include
#include 
 
/*Definición de funciones*/
int menu();
void leeOperadores(int *a,int *b);
int suma(int a, int b);
int resta(int a, int b);
void multiplicacion(int a, int b, float*resultado);
float division(int a, int b);
float potencia(int a, int b);
int factorial(int a);
int coeficientebinomial(int n, int k);
  
/*función menú*/
int menu(){
    int opcion;
    printf( "1.Suma\n"
            "2.Resta\n"
            "3.Multiplicacion\n"
            "4.Division\n"
            "5.Potencia\n"
            "6.Factorial\n"
            "7.Coeficiente Binomial\n"
            "0.Salir\n"
            "Elige una opcion:\n");
    scanf("%d",&opcion);
    return(opcion);
}
/*función que lee los valores con los que voy a operar*/
void leeOperadores(int *a,int *b){
    printf("dame el valor de a:\n");
    /*No necesito & porque a es una dirección de memoria
     *(*a) que es lo que yo le daba con el ampersan*/
    scanf("%d",a); 
    printf("dame el valor de b:\n");
    scanf("%d",b);
}
/*función suma*/
int suma(int a, int b){
    int suma;
    suma=a+b;
    return(suma);
}
/*función resta*/
int resta(int a, int b){
    int resta;
    resta=a-b;
    return(resta);
}
/*función multiplicación*/
void multiplicacion(int a, int b, float *resultado){
    *resultado=a*b;
}
/*función división*/
float division(int a, int b){
    float division;
    division=(float)a/b;
    return(division);
}
/*función potencia*/
float potencia(int a, int b){
    float resultado;
    if(b==0){
        return(1);
    }
    resultado=(float)a*potencia(a,b-1);
    return(resultado);
}
/*funcion factorial*/
int factorial(int a){
    int resultado;
    if(a==1){
        return(1);
    }
    resultado=a*factorial(a-1);
    return(resultado);
}
/*función que calcula el coeficiente Binomial*/
int coeficientebinomial(int n, int k){
    int numerador=factorial(n);
    int denominador;
    denominador=k;
    return (numerador/denominador);
}
/*función principal*/
int main(void){
    /*Definición de variables*/
    float resultado,d,p;
    int v,s,r,m,a,b,f,cb;
    v=menu(); //Asigno la opción que devuelve el menú a v
    
    /*la variable v que almacena el valor que devuelve la función menú
      la usaré para elegir la constante que determinará el caso que elige el
      switch. Además añado de nuevo la asignación dentro de cada caso del switch
      para que no termine el programa hasta que no elijamos la opción salir, 
      lo cual rompería la condición del while y saldría del bucle*/
    while(v!=0){
        switch(v){
            case 1 :{
                leeOperadores(&a,&b); //Ejecuto la funcion que lee los operadores
                s=suma(a,b);
                printf("%d+%d=%d\n\n",a,b,s);
                v=menu();
            } 
            case 2 :{
                leeOperadores(&a,&b); 
                r=resta(a,b);
                printf("%d-%d=%d\n",a,b,r);
                v=menu();
            }
            case 3 :{
                leeOperadores(&a,&b); 
                multiplicacion(a,b,&resultado);
                printf("%d*%d=%f\n",a,b,resultado);
                v=menu();
            }
            case 4 :{
                leeOperadores(&a,&b); 
                d=division(a,b);
                printf("%d:%d=%f\n",a,b,d);
                v=menu();
            }
            case 5 :{
                leeOperadores(&a,&b);
                p=potencia(a,b);
                printf("%d^%d=%f\n",a,b,p);
                v=menu();      
            }
            case 6 :{
                printf("Introduce un valor:\n");
                scanf("%d",&a);
                f=factorial(a);
                printf("%d!=%d\n",a,f);
                v=menu();
            }
            case 7 :{
                leeOperadores(&a,&b);
                cb=coeficientebinomial(a,b);
                printf("%d\n\n",cb);
                v=menu();
            }
            default :
                printf("opcion incorrecta\n");
                v=menu();
        }
    }
    printf("Hasta pronto!");
}
 
 
/* Esta es otra opción para hacer lo mismo que en el switch.
    while(v!=0){
    if(v==1){
        leeOperadores(&a,&b); //Ejecuto la funcion que lee los operadores
        s=suma(a,b);
        printf("%d+%d=%d\n",a,b,s);
    }else if(v==2){
        leeOperadores(&a,&b); 
        r=resta(a,b);
        printf("%d-%d=%d\n",a,b,r);
    }else if(v==3){
        leeOperadores(&a,&b); 
        multiplicacion(a,b,&resultado);
        printf("%d*%d=%f\n",a,b,resultado);            
    }else if(v==4){
        leeOperadores(&a,&b); 
        d=division(a,b);
        printf("%d:%d=%f\n",a,b,d);                
    }else if(v==5){
        leeOperadores(&a,&b);
        p=potencia(a,b);
        printf("%d^%d=%f\n",a,b,p);   
    }else if(v==6){
        printf("Introduce un valor:\n");
        scanf("%d",&a);
        f=factorial(a);
        printf("%d!=%d\n",a,f);                
    }  
    }*/

Leer Entrada Completa