Encontrar valores repetidos no vetor

Esse post começa comentando sobre uma ambiguidade em um enunciado de tarefa anterior. Vou replicar a atividade a solução que desenvolvi para ela (junto com o vídeo onde explicado a solução).

Enunciado: escreva um programa que receba do usuário um vetor com 20 valores inteiros e apresente o maior, o menor e suas respectivas posições em que os mesmos foram informados. Caso existam números iguais mostre a posição da primeira ocorrência.  

#include <stdio.h>

#define TAM 5 //cria uma constante

int main() {
    int vet[TAM], i, maior, posMaior, menor, posMenor;

    //preenche o vetor
    for (i = 0; i < TAM; i++) {
        scanf("%i", &vet[i]);
    }

    //encontra o maior valor
    maior    = vet[0];
    posMaior = 0;
    for (i = 1; i < TAM; i++) {
        if (vet[i] > maior) {
            maior    = vet[i];
            posMaior = i;
        }
    }

    //encontra o menor valor
    menor    = vet[0];
    posMenor = 0;
    for (i = 1; i < TAM; i++) {
        if (vet[i] < menor) {
            menor    = vet[i];
            posMenor = i;
        }
    }

    //mostra o vetor
    printf("Vetor: ");
    for (i = 0; i < TAM; i++) {
        printf("%i ", vet[i]);
    }

    printf("\nMaior valor: %i - posicao: %i", maior, posMaior+1);
    printf("\nMenor valor: %i - posicao: %i", menor, posMenor+1);

    return 0;
}

Teste o código em: https://ideone.com/JpQqQm

Resolução em vídeo

Link para o vídeo:https://youtu.be/JGu84T1QPHU

<hr/>

A solução apenas indicava a primeira ocorrência no vetor do maior e do menor valor presente (era o que eu esperava com o enunciado), mas fui questionado sobre o enunciado e resolvi apresentar uma outra solução (o questionamento foi explicado no vídeo). O vídeo a seguir apresenta a codificação para identificar os valores repetidos no vetor.

//Caso existam números iguais mostre a posição da primeira ocorrência.

#include <stdio.h>

#define TAM 5 //cria uma constante

int main() {
    int vet[TAM], i, j, valor;

    //preenche o vetor
    for (i = 0; i < TAM; i++) {
        scanf("%i", &vet[i]);
    }

    for (i = 0; i < TAM; i++) {
        for (j = i+1; j < TAM; j++) {
            if (vet[i] == vet[j]) {
                printf("Valor repetido :%i: nos indices %i e %i", vet[i], i, j);
                for (j = j+1; j < TAM; j++) {
                    if (vet[i] == vet[j]) {
                        printf(" e %i", j);
                    }
                }
                printf("\n");
            }
        }
    }


    return 0;
}

Resolução em vídeo

Share

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.