Ir ao conteúdo
  • Cadastre-se

Vetor [Eliminar Repetidos]


Visitante

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 comentário
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 comentário
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 comentário
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 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!