Ir ao conteúdo
  • Cadastre-se

Vetor [Eliminar Repetidos]


Posts recomendados

Boa noite galera, gostaria da ajuda de vocês para analisarem meu código e me ajudar a ver onde estou errando nesse exercício. Eu consigo fazer o vetor e contar e mostrar os repetidos mas não tenho a mínima ideia de como nesse mesmo código fazer um printf e mostrar esse mesmo vetor sem os números que se repetiram! Alguém pode me ajudar? 

 

/* Leia um vetor com 20 n´umeros inteiros. Escreva os elementos do vetor eliminando elementos
   repetidos */

#include <stdio.h>
#include <stdlib.h>

main(){
       
       int vet[10],i,resp=1,temp;
       
       for(i=0; i<10; i++){
                printf(" Entre com um numero: ");
                scanf("%d",&vet[i]);
       }
       temp = vet[0]; 
       for (i=1;i<10;i++){
                if(vet[i] == temp){
                      resp++; 
                }
                else{
                if(resp > 1){ 
                       printf("\n O valor %i esta repetido %i vezes\n",temp,resp);
                       resp = 1;
                }
        
                      temp = vet[i]; 
                }
        }
        if(resp > 1){ 
              printf("\n O valor %i esta repetido %i vezes\n",temp,resp);
        }
        system("pause>>null");
        }

 

Link para o post
Compartilhar em outros sites

Cria uma cópia do vetor, vá adicionando os números do vetor original. Só que antes de adicionar um número no vetor cópia(vetor distinto), você percorre todo o vetor cópia e verifica se o numero já existe. Se existir você da não insere o valor.

Sketch Toy: Draw sketches and share replays with friends!

  • Curtir 1
Link para o post
Compartilhar em outros sites

@CiroboyBR Boa Noite! Obrigada desde já pela força. Segue a continuação do código que fiz, ainda sim não consegui  resultado, segue o comentário no código. Por favor se puder comentar as linhas que fiz no final para que eu possa entender melhor serei grata. Entendi sua lógica e obrigada pelo link, só não consegui expressar. :confused:

 

/* Leia um vetor com 5 numeros inteiros. Escreva os elementos do vetor eliminando elementos
   repetidos */
           
#include <stdio.h>
#include <stdlib.h>

main(){
       
       int vet[5],copy[5],i,resp=1,temp;
       
       for(i=0; i<5; i++){
                printf(" Entre com um numero: ");
                scanf("%i",&vet[i]);
       }
       temp = vet[0]; 
       for (i=1;i<5;i++){
                if(vet[i] == temp){
                      resp++; 
                }
                else{
                if(resp > 1){
                       printf("\n O valor %i esta repetido %i vezes\n",temp,resp);
                       resp = 1;
                }
        
                       temp = vet[i]; 
                }
        }
        if(resp > 1){ 
              printf("\n O valor %i esta repetido %i vezes\n",temp,resp);
        }
        for (i=0;i<5;i++){ 
              copy[i]=vet[i]; // <---------------------------------------------- Essa linha está correta? É assim mesmo que se copia o vetor?
              if(vet[i]==copy[i]) // <------------------------------------------ Não consegui entender o que eu devo comparar aqui! 
                       printf("\n %d",copy[i]); // <---------------------------- E aqui na hora de imprimir, como tirar o valor repetido? Eu imaginava ser 																					algo do tipo vet[i] - alguma coisa.
                       
        }
        system("pause>>null");
        }

 

Link para o post
Compartilhar em outros sites

@mi2011 Para cada elemento do vetor original, você tem que comparar esse elemento a todos os elementos do vetor cópia(que será o vetor distinto). Vou lhe passar um código, olhe, analise e depois que entender ele, feche o arquivo e tente fazer o mesmo código do zero, repetindo a lógica que utilizei. Normalmente eu aprendo algoritmos com mais rapidez dessa maneira.
 

#include <stdio.h>
#include <stdlib.h>

#define tam 5

int v[tam] = {3, 2, 4, 3, 4};
int v_dis[tam];
int i, j, repete = 0, n = 0;

int main() {

  for (i = 0; i < tam; i++) {
    if (i == 0) {
      v_dis[n] = v[i];
      n++;
    } else {
      repete = 0;
      //percorre o vetor distinto verificando se o valor v[i] existe no mesmo
      for (j = 0; j < n; j++) {
        if(v[i] == v_dis[j]) {
          repete++;
        }
      }
      //se o valor v[i] não foi encontrado no vetor distinto, então adiciona
      if (repete < 1) {
        v_dis[n] = v[i];
        n++;// aumenta o tamanho do vetor distinto
      }
    }
  }

  printf("Vetor Distinto: ");
  for (i = 0; i < n; i++)
    printf("%d ", v_dis[i]);

  system("pause");
  return 0;
}

 

Link para o post
Compartilhar em outros sites

@CiroboyBR Muito obrigada, agora consegui entender sim, realmente é mais rápido para aprender dessa forma. Obrigada mais uma vez! Problema resolvido! Boa virada de ano pra ti!  :joia:

Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

Redes-Wi-Fi-capa-3d-newsletter.png

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!