Ir ao conteúdo

Posts recomendados

Postado

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");
        }

 

Postado

@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");
        }

 

Postado

@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;
}

 

Postado

@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:

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!