Ir ao conteúdo
  • Cadastre-se

C Eliminar números repetidos ou redudantes do programa


ArieviloAgarf

Posts recomendados

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

int main(int argc, char **argv)
{
	//Declaração das variáveis e vetores
    int vetA[10], vetB[15], vetC[25];
	int i, j;
	int tamVetor[25];
	
	//Impressão de números aleatórios de 0 a 100	
	printf("Preenchendo o vetor vetA aleatoriamente\n\n");
	//Função que mudará os valores em cada nova execução
	srand(time(NULL));
	for (i=0; i<10; i++){
		vetA[i] = rand() % 100;
		printf("O valor gerado na posicao [%d] eh = %d\n", i, vetA[i]);	
	}
	
	printf("\n");
	//Preenchendo o segundo vetor
	printf("Preenchendo o vetor vetB aleatoriamente\n\n");
	for (i=0; i<15; i++){
		vetB[i] =rand() % 100;
		printf("O valor gerado na posicao [%2d] eh = %d\n", i, vetB[i]);
    }
	printf("\n");
	// Os elementos do vetor A são atribuidos ao vetor C , na continuação o vetor C recebe os elementos do vetor B 
	for (i=0; i < 25; i++){
		vetC[i] = vetA[i];
	}
	for (i=10; i<25; i++){
		vetC[i]= vetB[i-10];
	}

	//Ordenando os objetos dos vetores
	int troca;
	//int tamVetor = 25;
	for (i = 1; i < tamVetor[i]; i++) {
		troca = vetC[i];
		j = i - 1;
			
		while ((j >= 0) && (vetC[j] > troca)) {
			vetC[j + 1] = vetC[j];
			j--;
		}	
		vetC[j + 1] = troca;
	}
	
	//Imprimindo o Vetor Resultante 
	printf("O vetor Ordenado possui os seguintes elementos\n");
		for(i=0; i<25; i++){
			printf("%2d\n ", vetC[i]);
		}
		
	//Verificando se há elementos repetidos, se houver suprimir da impressão os elementos com valor duplicado
     for( i = 0; i < 25; i++){
    
        for( j = 0; j < troca; j++){
        
            if(vetC[i] == tamVetor[j]){
             
        }

        if( j == troca){
        
            tamVetor[troca] = vetC[i];
            troca++;
        }
    }
}
    //Impressão dos Elementos do vetor C sem as repetições de valores
    printf("\n");
    printf("Impressao do Vetor C sem as redundancias.\n\n");
    for( i = 0; i < troca; i++ )
        printf("O Vetor C na posicao %2d = %2d\n",i+1, tamVetor[i] );
    printf("\n");

	return 0;
}

 

adicionado 1 minuto depois
agora, ArieviloAgarf disse:

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

int main(int argc, char **argv)
{
	//Declaração das variáveis e vetores
    int vetA[10], vetB[15], vetC[25];
	int i, j;
	int tamVetor[25];
	
	//Impressão de números aleatórios de 0 a 100	
	printf("Preenchendo o vetor vetA aleatoriamente\n\n");
	//Função que mudará os valores em cada nova execução
	srand(time(NULL));
	for (i=0; i<10; i++){
		vetA[i] = rand() % 100;
		printf("O valor gerado na posicao [%d] eh = %d\n", i, vetA[i]);	
	}
	
	printf("\n");
	//Preenchendo o segundo vetor
	printf("Preenchendo o vetor vetB aleatoriamente\n\n");
	for (i=0; i<15; i++){
		vetB[i] =rand() % 100;
		printf("O valor gerado na posicao [%2d] eh = %d\n", i, vetB[i]);
    }
	printf("\n");
	// Os elementos do vetor A são atribuidos ao vetor C , na continuação o vetor C recebe os elementos do vetor B 
	for (i=0; i < 25; i++){
		vetC[i] = vetA[i];
	}
	for (i=10; i<25; i++){
		vetC[i]= vetB[i-10];
	}

	//Ordenando os objetos dos vetores
	int troca;
	//int tamVetor = 25;
	for (i = 1; i < tamVetor[i]; i++) {
		troca = vetC[i];
		j = i - 1;
			
		while ((j >= 0) && (vetC[j] > troca)) {
			vetC[j + 1] = vetC[j];
			j--;
		}	
		vetC[j + 1] = troca;
	}
	
	//Imprimindo o Vetor Resultante 
	printf("O vetor Ordenado possui os seguintes elementos\n");
		for(i=0; i<25; i++){
			printf("%2d\n ", vetC[i]);
		}
		
	//Verificando se há elementos repetidos, se houver suprimir da impressão os elementos com valor duplicado
     for( i = 0; i < 25; i++){
    
        for( j = 0; j < troca; j++){
        
            if(vetC[i] == tamVetor[j]){
             
        }

        if( j == troca){
        
            tamVetor[troca] = vetC[i];
            troca++;
        }
    }
}
    //Impressão dos Elementos do vetor C sem as repetições de valores
    printf("\n");
    printf("Impressao do Vetor C sem as redundancias.\n\n");
    for( i = 0; i < troca; i++ )
        printf("O Vetor C na posicao %2d = %2d\n",i+1, tamVetor[i] );
    printf("\n");

	return 0;
}

 

Pessoal, ajudem nesta questão de como eliminar os valores repetidos do meu vetor resultante. Sou iniciante e ainda não consegui visualizar como resolver o problema.

Obrigado!

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@ArieviloAgarf    para eliminar os números repetidos você usa dois loop aninhados um dentro do outro , e tendo a quantidade de valor do vetor vetC , e o loop de dentro começa do valor da variável do primeiro loop  mais 1 , e verifica se o conteúdo do vetor vetC na posição indicada pela variável do loop de dentro for igual ao número na posição de vetC indicada pela variável do primeiro loop , marque essa posição como repetida colocando um número com valor negativo ,  que pode ser o número -1 , pois na geração dos números só haverá números positivos ou zero ,  assim na hora de imprimir , imprima apenas os números que forem diferentes de 1 negativo .. e seu método de ordenação não está funcionando ,   então seu código pode ser assim  :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
    //Declaração das variáveis e vetores
    int vetA[10], vetB[15], vetC[25];
    int i, j, troca;
    //Impressão de números aleatórios de 0 a 100
    printf("Preenchendo o vetor vetA aleatoriamente\n\n");
    //Função que mudará os valores em cada nova execução
    srand(time(NULL));
    for(i=0; i<25; i++){
        if(i<10){
            vetA[i] = rand() % 101;
            printf("O valor gerado na posicao [%d] eh = %d\n", i, vetA[i]);
        }
        else{
            if(i==10)printf("\nPreenchendo o vetor vetB aleatoriamente\n\n");
            vetB[i-10] = rand() % 101;
            printf("O valor gerado na posicao [%d] eh = %d\n", i, vetB[i-10]);
        }
    }
    printf("\n");
    //Preenchendo o segundo vetor
    printf("\n");
    // Os elementos do vetor A são atribuidos ao vetor C , na continuação o vetor C recebe os elementos do vetor B
    for(i=0; i < 10; i++){
        vetC[i] = vetA[i];
    }
    for (i=10; i<25; i++){
        vetC[i]= vetB[i-10];
    }
    //Ordenando os objetos dos vetores com o método bubblesort
    for(i=0; i<24; i++){
        for(j=i+1;j<25;j++){
            if( vetC[i] > vetC[j]){
                troca   = vetC[i] ;
                vetC[i] = vetC[j] ;
                vetC[j] =   troca ;
            }
        }
    }
    //Imprimindo o Vetor Resultante
    printf("O vetor Ordenado possui os seguintes elementos\n");
        for(i=0; i<25; i++){
            printf("%2d\n",vetC[i]);
        }
    //Verificando se há elementos repetidos, se houver suprimir da impressão os elementos com valor duplicado
     for(i=0; i<24; i++){
        for(j=i+1; j<25; j++){
            if(vetC[i]==vetC[j]){
                vetC[j]= -1;/* marcado como repetido */
            }
        }
    }
    //Impressão dos Elementos do vetor C sem as repetições de valores
    printf("\n");
    printf("Impressao do Vetor C sem as redundancias.\n\n");
    for(i=0; i<25; i++)
        if(vetC[i]!= -1)
            printf("O Vetor C na posicao %2d = %2d\n",i+1,vetC[i]);
    printf("\n\n");
    return 0;
}

 

  • Obrigado 1
Link para o comentário
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...