Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal!

 

Então, estou com uma duvida em relação ao meu código a baixo, não estou conseguindo eliminar elementos repetidos do vetor...  Eu já até procurei em outros fórum, mas não conseguir achar nada relacionado sobre isso... O code esta incompleto... Se alguém poder me ajudar agradeço de coração!

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

/*Leia um vetor com 20 numeros inteiros. Escreva os elementos do vetor eliminando ele- ´
mentos repetidos.
*/

main(){
	
	int vet[5], i,j, aux;
	
	for(i=0; i<5; i++){
		printf("Digite o %do valor: ", i+1);
		scanf("%d", &vet[i]);
	}
	
	for(i=0; i<5; i++){
		for(j= i+1; j<5; j++){
			if(vet[i] == vet[j]){
				aux = vet[i];
			}
		}
	}
	system("pause");
}

 

  • Curtir 1
Postado

@kamiLuke12     no enunciado diz para imprimir os numeros e eliminar os que sao repetidos , entao no seu codigo na hora que faz a comparacao , e se for igual voce coloca o valor zero para informar que naquela posicao o numero foi deletado , e faz assim ate o final do vetor , depois de sair desses dois loop voce coloca outro loop indo de zero ate vinte e verifica cada posicao , e as que forem diferente de zero voce imprime .

Postado

Mas 0 também é um número inteiro...

 

 

Ele diz que deve eliminar os repetidos na escrita, ou seja não precisa alterar o vetor, apenas não imprime o número novamente se já tiver impresso, pra isso poderia apenas fazer checar todos os números anteriores do vetor e ver se algum deles é igual ao número atual, se não encontrar nenhum igual então imprime o número atual.

  • Curtir 1
Postado

Como dito nos posts anteriores, existem várias maneiras de interpretar o problema e também várias soluções. Oferece a solução de criar um vetor secundário no qual será escrito apenas os número não repetidos (o vetor original permanece inalterado - ou seja, na verdade não foram removidos os duplicado):

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

/*Leia um vetor com 20 numeros inteiros. Escreva os elementos do vetor eliminando ele- B4
mentos repetidos.
*/

int main(){
	
	int vet[5], i,j, k=0;
    int aux[5]; //vetor auxiliar
	bool rept;  //variável auxiliar para indicar se existe número repetido
	

	for(i=0; i<5; i++){
		printf("Digite o %do valor: ", i+1);
		scanf("%d", &vet[i]);
	}
	
	for(i=0; i<5; i++)
	{
	    rept = false;
		for(j = i+1; j<5; j++){
			if(vet[i] == vet[j]) {
				rept = true; //indica que o número está repetido
				break;
			}
		}
		if (!rept) //apenas transfere para o novo vetor os números não repetidos
		{
		  aux[k] =vet[i];
		  k++;
		}
	}
	for(i=0; i<k; i++)
	{
		printf("%d ", aux[i]);
	}
	
	return 0;
}

 

  • Curtir 2
Postado

@Flávio Pedroza  Em C bool, true e false são definidos da biblioteca stdbool.h, logo se vai usá-los deve incluí-la. (E não está usando as bibliotecas stdlib.h e string.h então não precisa incluí-las.)

 

 

E aqui está o código do @Flávio Pedroza com apenas algumas modificações para apenas imprimir (escrever) os números não repetidos (não precisando do vetor auxiliar):

#include <stdio.h>
#include <stdbool.h>

/*
Leia um vetor com 20 numeros inteiros. Escreva os elementos do vetor eliminando ele-
mentos repetidos.
*/

#define TAM  20

int main() {

    int vet[TAM], i,j;
    bool rept;  //variavel auxiliar para indicar se existe numero repetido


    for (i=0; i<TAM; i++) {
        printf("Digite o %do valor: ", i+1);
        scanf("%d", &vet[i]);
    }

    for (i=0; i<TAM; i++) {
        rept = false;
        for (j = 0; j < i; j++) {
            if (vet[i] == vet[j]) {
                rept = true; //indica que o numero esta repetido
                break;
            }
        }
        if (!rept) { //apenas imprime os numeros nao repetidos
            printf("%d ", vet[i]);
        }
    }

    return 0;
}

 

 

  • Curtir 3

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!