marcoshuck icon

Vectores con memoria dinámica

marcoshuck | PRO | 12/15/16 01:56:11 PM UTC | 0 ⭐ | 401 👁️ | Never ⏰ | []
C++ |

2.11 KB

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <stdlib.h>
 
/* Vector con memoria dinámica (malloc, calloc y free) */
 
void IngresarVector(int * v, int size);
void MostrarVector(int * v, int size);
int Maximo(int * v, int size);
int Minimo(int * v, int size);
float Promedio(int * v, int size);
 
int main(int argc, char *argv[])
{
    int sizev, *v;
    // Cantidad de elementos del vector
    printf("Ingrese la cantidad de elementos del vector: ");
    scanf("%d", &sizev);
    // Inicialización del vector en la memoria dinámica (heap)
    v = (int *)calloc(sizev, sizeof(int));
    // Ingreso de elementos
    if(v == NULL)
    {
        printf("Error:\n");
        printf("\tNo hay memoria disponible.\n");
        system("PAUSE");
        return 1;
    }
    IngresarVector(v, sizev);
    // Mostrar valores de la lista
    MostrarVector(v, sizev);
    // Valor máximo, mínimo y promedio
    printf("Valor maximo del vector: %d\n", Maximo(v, sizev));
    printf("Valor minimo del vector: %d\n", Minimo(v, sizev));
    printf("Valor promedio del vector: %.2f\n", Promedio(v, sizev));
    // Liberar memoria
    free(v);
    system("PAUSE");    
    return 0;
}
 
void IngresarVector(int * v, int size)
{
    int i;
    for(i = 0; i < size; i++)
    {
        printf("Ingrese el valor del elemento v[%d] = ", i+1);
        scanf("%d", &v[i]);
    } 
}
 
void MostrarVector(int * v, int size)
{
    int i;
    printf("Mostrar vector: \n");
    for(i = 0; i < size; i++)
    {
        printf("v[%d]: %d ", i+1, v[i]);
    }
    printf("\n");
}
 
int Maximo(int * v, int size)
{
    int i;
    int max = v[0];
    for(i = 1; i < size; i++)
    {
        if(max < v[i])
            max = v[i];
    } 
    return max;
}
 
int Minimo(int * v, int size)
{
    int i;
    int min = v[0];
    for(i = 1; i < size; i++)
    {
        if(min > v[i])
            min = v[i];
    } 
    return min;
}
 
float Promedio(int * v, int size)
{
    int i;
    int sum = 0;
    float prm = 0;
    for(i = 0; i < size; i++)
    {
        sum += v[i];
    }
    prm = (float)sum/size;
    return prm;
}

Comments