Ir ao conteúdo
  • Cadastre-se

Programa para valores repetidos num vetor


Juvia Loxar

Posts recomendados

#include<stdio.h>
#include<stdlib.h>
//FUNCIONA MAS IMPRIME MAIS DE UMA VEZ O REPETIDO, ERA PRA IMPRIMIR 1 VEZ CADA REPETIDO.
int main()
{ int n,i,j,cont=0;
  int *vet;
    printf("Digite o tamanho: ");
    scanf("%d",&n);

    vet = (int*) malloc(n*sizeof(int));

    for(i=0;i<n;i++)
    {
        printf("Coloque o valor de indice %d: ",i);
        scanf("%d",&vet[i]);
    }

    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(vet[i]==vet[j] && i!=j)
            {
                printf("Repeticao: %d\n",vet[i]);
                break;
            }

        }
    }




return 0;
}

Esse é o exercício: Faça um programa que informe quais são os números que se repetem em um vetor.

O programa q eu fiz imprimi de forma repetida os números repetidos. Por exemplo, tenho o vetor {1,5,8,4,4,5,0,8,8} quero que apareça Repeticao: 5 Repeticao: 8 Repeticao: 4 Mas não é isso que acontece, me ajude se puder

Link para o comentário
Compartilhar em outros sites

20 minutos atrás, zOpek disse:

@Juvia Loxar Por que I!=J?  

porque tô comparando o vetor com ele mesmo dai se eu tiver vet[0] ==vet[0] claro que vai dar repetido porque é a mesmo posição, por isso coloco que i tem q ser diferente de j

adicionado 8 minutos depois

Deixa pra lá, resolvi aqui. Essa foi a parte q alterei. (Tendo em mente q o usuário n vai digitar 99 para preencher o vetor)

 

  for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
        {
            if(vet[i]==vet[j] && i!=j && vet[i]!=99)
            {
                printf("Repeticao: %d\n",vet[i]);
                vet[j] = 99;
                vet[i] = 99;
                break;
            }

        }
    }

 

Link para o comentário
Compartilhar em outros sites

Boa noite, tudo bem?

Resolução foi alterar ambos os valores quando suas grandezas se repetem, contudo outra solução interessante é; ordenar o vetor de maneira a colocar os termos repetidos juntos, vizinhos Ex.: [5][4][3][5] para [5][5][4][3] para garantir que j não refaça a busca j = i a cada interação de i, desta forma preserva se o vetor. Claro se preserva o vetor fosse parte importante do exercício.

:wiggle:

adicionado 1 minuto depois
for( j = i + 1; j < n; j++ )
 {
   ...
 }

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...