Advertisement
Coldpois0n

Taller de Programación (Programa #3)

Aug 27th, 2015
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.70 KB | None | 0 0
  1. /*
  2. programa: Funciones.c
  3. fecha: 27/08/2015
  4. autor: Carlos Bernardo Garza Treviño
  5. proposito: Aprender a hacer funciones en ansi c
  6.            funcion para el calculo de Factorial
  7.            funcion para el calculo de Permutaciones
  8.            funcion para el calculo de Combinaciones
  9.            funcion para el calculo de raices
  10.            funcion para el calculo de fibonacci
  11. */
  12. #include <stdio.h>
  13. #define error 0.00000001
  14.  
  15. int Menu( void ) {
  16.     int i;
  17.     system("cls");
  18.     printf("\n\n\n\n");
  19.     printf("\t\t\t   Menu Principal\n");
  20.     printf("\t\t\t====================\n");
  21.     printf("\t\t\t 1.- Factorial\n");
  22.     printf("\t\t\t 2.- Permutaciones\n");
  23.     printf("\t\t\t 3.- Combinaciones\n");
  24.     printf("\t\t\t 4.- Raices\n");
  25.     printf("\t\t\t 5.- Fibonacci\n");
  26.     printf("\t\t\t 6.- Serie Fibonacci\n");
  27.     printf("\t\t\t 7.- Salir\n\n");
  28.     printf("\t\t\t     Opcion -> ");
  29.     scanf("%d", &i);
  30.     return(i);
  31. }
  32. double Factorial( int a ) {
  33.     double prod = 1.0;
  34.     int i;
  35.     for(i = 1; i <= a; i = i + 1) {
  36.        prod = prod * i;
  37.     }
  38.     return( prod );
  39. }
  40. double Perm( int a, int b ) {
  41.     return(Factorial( a ) / Factorial( a - b ));
  42. }
  43. double Comb( int a, int b ) {
  44.     return(Perm( a, b ) / Factorial( b ) );
  45. }
  46. double Raices(double x, int exp) {
  47.     double Xa = 0.0, Xn = 1.0, dif;
  48.     do {
  49.         Xa = Xn;
  50.         Xn = (1.0 / exp) * (((exp - 1.0) * Xa) + (x / pow(Xa, (exp - 1.0))));
  51.         dif = Xa - Xn;
  52.         if( dif < 0 ) dif *= -1.0;          
  53.     } while( dif > error );
  54.     return(Xn);
  55. }
  56. double Fibo( int a ) {
  57.     if(a == 0) return 0;
  58.     if(a == 1) return 1;
  59.     return( Fibo(a - 1) + Fibo(a - 2));
  60. }
  61. int main(int argi, char** argc) {
  62.     int opcion = 0, n, r;
  63.     double resultado, valor;
  64.     while( opcion < 7 ) { // sentencia de ciclo
  65.      opcion = Menu(); // llamada a la funcion Menu
  66.       switch( opcion ) { // sentencia de control
  67.        case 1: {
  68.         printf("\n\tDame el valor del factorial a calcular -> ");
  69.         scanf("%d", &n);
  70.         resultado = Factorial(n); // llamada a la funcion
  71.         printf("\n\tFactorial(%d) = %.0lf\n\n\t", n, resultado);
  72.         break;
  73.        }
  74.        case 2: {
  75.         printf("\n\tValores de P(n, r) calcular -> ");
  76.         scanf("%d,%d", &n, &r);
  77.         resultado = Perm(n,r); // llamada a la funcion
  78.         printf("\n\tPermutaciones(%d,%d) = %.0lf\n\n\t", n, r, resultado);
  79.         break;
  80.        }
  81.        case 3: {
  82.         printf("\n\tValores de C(n, r) calcular -> ");
  83.         scanf("%d,%d", &n, &r);
  84.         resultado = Comb(n,r); // llamada a la funcion
  85.         printf("\n\tCombinaciones(%d,%d) = %.0lf\n\n\t", n, r, resultado);
  86.         break;
  87.        }
  88.        case 4: {
  89.         printf("\n\tValores de R(valor, r) calcular -> ");
  90.         scanf("%lf,%d", &valor, &r);
  91.         resultado = Raices(valor,r); // llamada a la funcion
  92.         printf("\n\tRaiz(%lf,%d) = %.6lf\n\n\t", valor, r, resultado);
  93.         break;
  94.        }
  95.        case 5: {
  96.         printf("\n\tValor de F(r) calcular -> ");
  97.         scanf("%d", &r);
  98.         resultado = Fibo(r); // llamada a la funcion
  99.         printf("\n\tFibonacci(%d) = %.0lf\n\n\t", r, resultado);
  100.         break;
  101.        }
  102.        case 6: {
  103.         printf("\n\tHasta que valor de F(r) calcular -> ");
  104.         scanf("%d", &r);
  105.         for( n = 0; n <= r; n++ ) {
  106.             resultado = Fibo(n); // llamada a la funcion
  107.             printf("%.0lf, ", resultado);
  108.         }
  109.         printf("\n\n");
  110.         for( n = 2; n <= r; n++ ) {
  111.             resultado = Fibo( n ) / Fibo( n - 1 ); // llamada a la funcion
  112.             printf("%.3lf, ", resultado);
  113.         }
  114.         break;
  115.        }
  116.       }
  117.       system("pause");
  118.     }
  119.     return 0;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement