Practica Nº 3 Lenguaje y algoritmos de programación Ayudante: Felipe Humberto Mendoza Lira SOLUCIÓN PROBLEMA 1 #include <stdio.h> #include <stdlib.h> int main(void) { /* Ingreso de valor BigEndian */ int bigEndian, littleEndian; printf("Ingrese un numero hexadecimal: "); scanf("%x", &bigEndian); /* Intercambio de bytes desde BigEndian a LitleEndian*/ char *p=(char *)&bigEndian; char *q=(char *)&littleEndian; int n,s; for (n=0,s=3;n<=3&&s>=0;n++,s--) *(q+n)=*(p+s); /* Muestra en pantalla valor de LitleEndian */ printf("0x%x en formato little-endian es: 0x%x\n", bigEndian, littleEndian); /* Pausa programa */ system("pause"); return 0; } SOLUCIÓN PROBLEMA 2 #include <stdio.h> #include <stdlib.h> int main(void) { /* Ingreso de decimal y base a convertir el decimal */ int decimal, base; printf("Ingrese un numero decimal: "); scanf("%i", &decimal); printf("Ingrese base: "); scanf("%i", &base); /* Conversion a la base deseada */ int valorenbase; char temp[20]; itoa(decimal, temp, base); sscanf(temp, "%x", &valorenbase); /* Muestra valor original y valor en base deseada */ printf("%i en decimal es %X en base %i\n",decimal,valorenbase,base); /* Pausa programa */ system("pause"); return 0; } Pagina 1 de 5 Practica Nº 3 Lenguaje y algoritmos de programación Ayudante: Felipe Humberto Mendoza Lira SOLUCIÓN PROBLEMA 3A #include <stdio.h> #include <stdlib.h> int factorial(int n) { /* Calculo del factorial de n */ int factorial = 1; while (n>1) { factorial*=n--; } return factorial; } int main(void) { /* Ingreso de valor de n */ int n; printf("\nIngrese numero entero para calcular su factorial: "); scanf("%i", &n); /* Muestra valor del factorial */ printf("El factorial es %i\n", factorial(n)); /* Pausa programa */ system("pause"); return 0; } SOLUCIÓN PROBLEMA 3B #include <stdio.h> #include <stdlib.h> int factorial(int n) { /* Calculo del factorial de n */ if(n<=1) return 1; else return n*factorial(n-1); } int main(void) { /* Ingreso de valor de n */ int n; printf("\nIngrese numero entero para calcular su factorial: "); scanf("%i", &n); /* Muestra valor del factorial */ printf("El factorial es %i\n", factorial(n)); /* Pausa programa */ system("pause"); return 0; } Pagina 2 de 5 Practica Nº 3 Lenguaje y algoritmos de programación Ayudante: Felipe Humberto Mendoza Lira SOLUCIÓN PROBLEMA 3C #include <stdio.h> #include <stdlib.h> #include <math.h> double factorial(int n) { /* Calculo del factorial de n */ double factorial=1; while (n>1) { factorial*=n--; } return factorial; } double exponencial(int x,int n) { /* Calculo de la aproximación de e^x de orden n */ double valor=0; int i; for (i=0; i<=n; i++) { valor+=(pow(x,i)/factorial(i)); } return valor; } int main(void) { /* Ingreso de valor de x y n */ int x,n; printf("Ingrese el valor de x: "); scanf("%i",&x); printf("Ingrese el valor de n: "); scanf("%i",&n); /* Muestra valor de la aproximación de e^x de orden n */ printf("El valor de la aproximacion de e^%i para n igual a %i es: %.8e\n",x, n, exponencial(x,n)); /* Pausa programa */ system("pause"); return 0; } Pagina 3 de 5 Practica Nº 3 Lenguaje y algoritmos de programación Ayudante: Felipe Humberto Mendoza Lira SOLUCIÓN PROBLEMA 3D #include <stdio.h> #include <stdlib.h> #include <math.h> #define TRUE 1; #define FALSE 0; double factorial(int n) { /* Calculo del factorial de n */ double factorial=1; while (n>1) { factorial*=n--; } return factorial; } double exponencial(int x,int n) { /* Calculo de la aproximación de e^x de orden n */ double valor=0; int i; for (i=0; i<=n; i++) { valor+=(pow(x,i)/factorial(i)); } return valor; } int main_factorial(void) { /* Ingreso de valor de n */ int n; printf("\nIngrese numero entero para calcular su factorial: "); scanf("%i", &n); /* Muestra valor del factorial */ printf("El factorial es %i\n", factorial(n)); /* Pausa programa */ system("pause"); return 0; } int main_exponencial(void) { /* Ingreso de valor de x y n */ int x,n; printf("Ingrese el valor de x: "); scanf("%i",&x); printf("Ingrese el valor de n: "); scanf("%i",&n); /* Muestra valor de la aproximación de e^x de orden n */ printf("El valor de la aproximacion de e^%i para n igual a %i es: %.8e\n",x, n, exponencial(x,n)); /* Pausa programa */ system("pause"); return 0; } Pagina 4 de 5 Practica Nº 3 Lenguaje y algoritmos de programación int main(void) { int salir; do { salir=FALSE; /* Despliege del menu */ system("cls"); printf ("Operacion que desea realizar\n"); printf ("1.-Calcular factorial\n"); printf ("2.-Aproximacion de e^x\n"); printf ("3.-Salir\n"); /* Ingreso de opcion */ int opcion; scanf ("%d",&opcion); /* Seleccion de la opcion */ switch (opcion) { case 1: system("cls"); main_factorial(); break; case 2: system("cls"); main_exponencial(); break; case 3: salir=TRUE; break; } } while(!salir); return 0; } Pagina 5 de 5 Ayudante: Felipe Humberto Mendoza Lira