20 - Vectores (mayor y menor elemento)


Un algoritmo muy común es la búsqueda del mayor y menor elemento de un vector, lo mismo que su posición.

Tiene sentido sobre todo trabajando con vectores que almacenan valores enteros o flotantes.

Si tenemos un vector que almacena los siguientes datos:

mayor y menor elemento de un vector. posicion del mayor y menor

Luego el mayor del vector es el número 250 que se encuentra en la posición 4.

Problema 1:

Confeccionar un programa que defina en la main un vector de 5 elementos de tipo entero. Cargar e imprimir el mayor elemento y su posción.

Programa: programa110.c

Ver video

#include<stdio.h>
#include<conio.h>

void cargar(int vector[5])
{
    int x;
    for(x=0;x<5;x++)
    {
        printf("Ingrese elemento:");
        scanf("%i",&vector[x]);
    }
}

void mayor(int vector[5])
{
    int may=vector[0];
    int pos=0;
    int x;
    for(x=1;x<5;x++)
    {
        if (vector[x]>may)
        {
            may=vector[x];
            pos=x;
        }
    }
    printf("Mayor elemento del vector:%i\n",may);
    printf("Se encuentra en la posicion:%i",pos);
}


int main()
{
    int vector[5];
    cargar(vector);
    mayor(vector);
    getch();
    return 0;
}

En la función main procedemos a definir el vector y llamar a la función de cargar:

int main()
{
    int vector[5];
    cargar(vector);

Para obtener el mayor elemento y la posición del mismo realizar los siguientes pasos:

void mayor(int vector[5])
{
    int may=vector[0];
    int pos=0;
    int x;
    for(x=1;x<5;x++)
    {
        if (vector[x]>may)
        {
            may=vector[x];
            pos=x;
        }
    }
    printf("Mayor elemento del vector:%i\n",may);
    printf("Se encuentra en la posicion:%i",pos);
}

Inicializamos una variable llamada may con la primer componente del vector:

    int may=vector[0];

Inicializamos una variable llamada pos con el valor 0, ya que consideramos que el mayor es la primer componente del vector:

    int pos=0;

Recorremos las componentes del vector que faltan analizar, o sea, de la 1 a la 4:

    for(x=1;x<5;x++)

Accedemos a cada componente para controlar si supera lo que tiene la variable may:

        if (vector[x]>may)

En caso de ser verdadera la condición asignamos a la variable may este nuevo valor de vector[x]:

            may=vector[x];

y a la variable pos le cargamos la variable x que indica la posición de la componente que estamos analizando:

            pos=x;

Cuando salimos de la estructura repetitiva imprimimos la variable may que contiene el mayor valor del vector y la variable pos almacena la posición donde se almacena dicho mayor en el vector:

    printf("Mayor elemento del vector:%i\n",may);
    printf("Se encuentra en la posicion:%i",pos);

Problema propuesto

Solución
programa111.c

#include<stdio.h>
#include<conio.h>

void cargar(int vector[5])
{
    int x;
    for(x=0;x<5;x++)
    {
        printf("Ingrese elemento:");
        scanf("%i",&vector[x]);
    }
}

int menor(int vector[5])
{
    int men=vector[0];
    int x;
    for(x=1;x<5;x++)
    {
        if (vector[x]<men)
        {
            men=vector[x];
        }
    }
    return men;
}

void verificarRepite(int vector[5],int men)
{
    int cant=0;
    int x;
    for(x=0;x<5;x++)
    {
        if (vector[x]==men)
        {
            cant++;
        }
    }
    if (cant==1)
    {
        printf("El menor del vector no se repite.");
    }
    else
    {
        printf("El menor del vector se repite");
    }
}


int main()
{
    int vector[5];
    cargar(vector);
    int men=menor(vector);
    printf("El elemento menor del vector es:%i\n",men);
    verificarRepite(vector,men);
    getch();
    return 0;
}

Retornar