Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void crear_vector (int *, int); //Creará un vector sobre el que trabajar
- int suma_componentes_iterativa (int *, int);
- int suma_componentes_recursiva (int *, int);
- float media_componentes_iterativa (int *, int n);
- int maximo_iterativo (int *, int);
- int minimo_iterativo (int *v, int n);
- int main ()
- {
- int *v;
- int n=0; // Número de componentes del vector
- /*Variables iterativas */
- int suma_iterativa=0;
- float media_iterativa=0; // Media de las componentes del vector
- //calculada de forma iterativa
- int minimo_iter=0;
- int maximo_iter=0;
- /* Variables recursivas */
- int suma_recursiva=0;
- int opcion=0; // Elección en el menú
- printf("\n Introduzca el número de componentes del vector:");
- scanf("%d", &n);
- v=(int *)malloc(sizeof(int)*n); //Reserva de memoria para las componentes
- crear_vector(v,n); //Llamada a la función de creación del vector
- /* Menú */
- printf("\n ¿Qué desea hacer?");
- printf("\n 1: Suma de componentes iterativa");
- printf("\n 2: Suma de componentes recursiva");
- printf("\n 3: Media de componentes iterativa");
- printf("\n 4: Media de componentes recursiva");
- printf("\n 5: Máximo de las componentes iterativa");
- printf("\n 6: Máximo de las componentes recursiva");
- printf("\n 7: MÃnimo de las componentes iterativa");
- printf("\n 8: MÃnimo de las componentes recursiva");
- scanf("\n %d", &opcion);
- switch(opcion)
- {
- case 1:
- {
- suma_iterativa=suma_componentes_iterativa(v,n);
- printf("\n El resultado de sumar las componentes es: %d", suma_iterativa);
- }break;
- case 2:
- {
- suma_recursiva=suma_componentes_recursiva(v,n);
- printf("\n El resultado de sumar las componentes es: %d", suma_recursiva);
- }break;
- case 3:
- {
- media_iterativa=media_componentes_iterativa (v,n);
- printf("\n La media resultante es: %f", media_iterativa);
- }break;
- case 4:
- {
- }break;
- case 5:
- {
- maximo_iter=maximo_iterativo (v,n);
- printf("\n El maximo es: %d", maximo_iter);
- }break;
- case 6:
- {
- }break;
- case 7:
- {
- minimo_iter=minimo_iterativo (v,n);
- printf("\n El mÃnimo es: %d", minimo_iter);
- }break;
- case 8:
- {
- }break;
- }
- fflush(stdin);
- printf("\n Presione una tecla para continuar...");
- getchar ();
- return 0;
- }
- void crear_vector (int *v, int n)
- {
- int i;
- for(i=0;i<n;i++)
- {
- *v=rand ()%100;
- printf("\n %d", *v);
- v++;
- }
- }
- int suma_componentes_iterativa (int *v, int n)
- {
- int i; //Contador de iteracciones
- int suma=0; //Suma de las componentes del vector
- for(i=0;i<n;i++)
- {
- suma=suma+*v;
- v++;
- }
- return suma;
- }
- int suma_componentes_recursiva(int *v, int n)
- {
- if (n==1) {
- return v[0];
- }
- else {
- return v[n-1] + suma_componentes_recursiva(v,n-1);
- }
- }
- float media_componentes_iterativa (int *v, int n)
- {
- int i=0; //Contador de iteraciones
- float media=0; // Almacenara el resultado de hacer la media
- int suma_componentes=0; //Variable que guardará la suma de la llamada a la suma
- //for(i=0;i<n;i++)
- suma_componentes=suma_componentes_iterativa (v,n); //Llamamos a la función de la suma
- media=suma_componentes/(float)n; //Conversión de tipos pues, en caso contrario,
- //harÃamos la división entera
- return media;
- }
- int maximo_iterativo (int *v, int n)
- {
- int i;
- int maximo;
- maximo=*v; // Fijamos como máximo la primera componente del vector, pues no
- //hemos "leÃdo" más
- for (i=0;i<n;i++)
- {
- if(maximo<*(v))
- {
- maximo=*v;
- v++;
- }
- else
- {
- v++;
- }
- }
- return maximo;
- }
- int minimo_iterativo (int *v, int n)
- {
- int i;
- int minimo;
- minimo=*v; // Fijamos como minimo la primera componente del vector, pues no
- //hemos "leÃdo" más
- for (i=1;i<n;i++)
- {
- if(minimo>*(v))
- {
- minimo=*v;
- v++;
- }
- else
- {
- v++;
- }
- }
- return minimo;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement