Advertisement
Trollkemada

Untitled

Mar 17th, 2012
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.67 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void crear_vector (int *, int); //Creará un vector sobre el que trabajar
  5.  
  6. int suma_componentes_iterativa (int *, int);
  7. int suma_componentes_recursiva (int *, int);
  8.  
  9. float media_componentes_iterativa (int *, int n);
  10. int maximo_iterativo (int *, int);
  11. int minimo_iterativo (int *v, int n);
  12.  
  13. int main ()
  14. {
  15.     int *v;
  16.     int n=0; // Número de componentes del vector
  17.  
  18.     /*Variables iterativas */
  19.  
  20.     int suma_iterativa=0;
  21.     float media_iterativa=0; // Media de las componentes del vector
  22.                             //calculada de forma iterativa
  23.     int minimo_iter=0;
  24.     int maximo_iter=0;
  25.  
  26.     /* Variables recursivas */
  27.  
  28.     int suma_recursiva=0;
  29.  
  30.     int opcion=0; // Elección en el menú
  31.  
  32.     printf("\n Introduzca el número de componentes del vector:");
  33.     scanf("%d", &n);
  34.  
  35.     v=(int *)malloc(sizeof(int)*n); //Reserva de memoria para las componentes
  36.  
  37.     crear_vector(v,n); //Llamada a la función de creación del vector
  38.  
  39.     /* Menú */
  40.  
  41.     printf("\n ¿Qué desea hacer?");
  42.     printf("\n 1: Suma de componentes iterativa");
  43.     printf("\n 2: Suma de componentes recursiva");
  44.     printf("\n 3: Media de componentes iterativa");
  45.     printf("\n 4: Media de componentes recursiva");
  46.     printf("\n 5: Máximo de las componentes iterativa");
  47.     printf("\n 6: Máximo de las componentes recursiva");
  48.     printf("\n 7: Mínimo de las componentes iterativa");
  49.     printf("\n 8: Mínimo de las componentes recursiva");
  50.  
  51.     scanf("\n %d", &opcion);
  52.  
  53.     switch(opcion)
  54.     {
  55.         case 1:
  56.         {
  57.             suma_iterativa=suma_componentes_iterativa(v,n);
  58.             printf("\n El resultado de sumar las componentes es: %d", suma_iterativa);
  59.  
  60.         }break;
  61.  
  62.         case 2:
  63.         {
  64.             suma_recursiva=suma_componentes_recursiva(v,n);
  65.             printf("\n El resultado de sumar las componentes es: %d", suma_recursiva);
  66.  
  67.         }break;
  68.  
  69.         case 3:
  70.         {
  71.             media_iterativa=media_componentes_iterativa (v,n);
  72.             printf("\n La media resultante es: %f", media_iterativa);
  73.  
  74.         }break;
  75.  
  76.         case 4:
  77.         {
  78.  
  79.         }break;
  80.  
  81.         case 5:
  82.         {
  83.             maximo_iter=maximo_iterativo (v,n);
  84.             printf("\n El maximo es: %d", maximo_iter);
  85.        
  86.         }break;
  87.  
  88.         case 6:
  89.         {
  90.  
  91.         }break;
  92.  
  93.         case 7:
  94.         {
  95.             minimo_iter=minimo_iterativo (v,n);
  96.             printf("\n El mínimo es: %d", minimo_iter);
  97.  
  98.  
  99.         }break;
  100.  
  101.         case 8:
  102.         {
  103.  
  104.         }break;
  105.     }
  106.  
  107.    
  108.    
  109.    
  110.  
  111.     fflush(stdin);
  112.     printf("\n Presione una tecla para continuar...");
  113.     getchar ();
  114.     return 0;
  115. }
  116.  
  117. void crear_vector (int *v, int n)
  118. {
  119.     int i;
  120.  
  121.     for(i=0;i<n;i++)
  122.     {
  123.         *v=rand ()%100;
  124.         printf("\n %d", *v);
  125.         v++;
  126.        
  127.     }
  128.  
  129. }
  130.  
  131. int suma_componentes_iterativa (int *v, int n)
  132. {
  133.  
  134.     int i; //Contador de iteracciones
  135.     int suma=0; //Suma de las componentes del vector
  136.  
  137.     for(i=0;i<n;i++)
  138.     {
  139.         suma=suma+*v;
  140.         v++;
  141.  
  142.     }
  143.  
  144.     return suma;
  145. }
  146.  
  147. int suma_componentes_recursiva(int *v, int n)
  148. {
  149.     if (n==1) {
  150.         return v[0];
  151.     }
  152.     else {
  153.          return v[n-1] + suma_componentes_recursiva(v,n-1);
  154.     }
  155. }
  156.  
  157. float media_componentes_iterativa (int *v, int n)
  158. {
  159.     int i=0; //Contador de iteraciones
  160.     float media=0; // Almacenara el resultado de hacer la media
  161.     int suma_componentes=0; //Variable que guardará la suma de la llamada a la suma
  162.  
  163.     //for(i=0;i<n;i++)
  164.  
  165.     suma_componentes=suma_componentes_iterativa (v,n); //Llamamos a la función de la suma
  166.     media=suma_componentes/(float)n; //Conversión de tipos pues, en caso contrario,
  167.                                     //haríamos la división entera
  168.  
  169.     return media;
  170.  
  171. }
  172.  
  173. int maximo_iterativo (int *v, int n)
  174. {
  175.     int i;
  176.     int maximo;
  177.  
  178.     maximo=*v; // Fijamos como máximo la primera componente del vector, pues no
  179.                 //hemos "leído" más
  180.     for (i=0;i<n;i++)
  181.     {
  182.  
  183.  
  184.         if(maximo<*(v))
  185.         {
  186.             maximo=*v;
  187.             v++;
  188.         }
  189.  
  190.         else
  191.         {
  192.             v++;
  193.         }
  194.     }
  195.  
  196.     return maximo;
  197. }
  198.  
  199. int minimo_iterativo (int *v, int n)
  200. {
  201.     int i;
  202.     int minimo;
  203.  
  204.     minimo=*v; // Fijamos como minimo la primera componente del vector, pues no
  205.                 //hemos "leído" más
  206.     for (i=1;i<n;i++)
  207.     {
  208.  
  209.  
  210.         if(minimo>*(v))
  211.         {
  212.             minimo=*v;
  213.             v++;
  214.         }
  215.  
  216.         else
  217.         {
  218.             v++;
  219.         }
  220.     }
  221.  
  222.     return minimo;
  223. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement