Eliminação de duplicatas. No Capítulo 12, exploraremos a estrutura de dados de árvore de pesquisa binária de alta velocidade. Um dos recursos de uma árvore de pesquisa binária é que os valores duplicados são descartados quando são feitas inserções na árvore. Isso é conhecido como eliminação de duplicatas. Escreva um programa que produza 20 números aleatórios entre 1 e 20. O programa deverá armazenar todos os valores não duplicados em um array. Use o menor array possível para conseguir realizar essa tarefa.

Passo 1

Oiiii, tudo bom?

Vamos iniciar mais um programa :)

Inicialmente, colocamos as bibliotecas que precisaremos, a padrão em c , e as e que nos ajudará a gerar números aleatórios. Além disso, definimos a constante SIZE para determinar o tamanho do nosso array, como na questão pede para que usássemos o menor array possível sendo que devemos produzir 20 números aleatórios, devemos pensar na possibilidade dos 20 serem distintos.

Já olhando para o main, nomeamos algumas variáveis, e inclusive o nosso array. Em seguida chamamos a função srand para gerar números distintos.

Passo 2

Ainda no main, utilizamos o laço do while, para nos auxiliar no armazenamento e verificação dos números do nosso array. Primeiro, fazemos o armazenamento dos números no array e para isso utilizamos a função rand para gerar números aleatórios de 1 - 20. Depois supomos que em primeiro momento não existem números iguais no nosso array, em seguida fazemos a verificação do número que acabou de ser gerado. Se o número já pertencer ao nosso array, a variável igual receberá o valor 1. Posteriormente, utilizaremos o condicional if para saber se a variável igual é 1 ou 0, caso seja 0, então podemos prosseguir no armazenamento dos demais números. Entretanto, caso seja 1 outro valor deverá ocupar aquela posição. Esse laço do while tem que se repetir até que todas as posições estejam preenchidas com números distintos.

Passo 3

Tudo belezinha até aqui?

Então por fim, exibimos o nosso array ao usuário, e para isso utilizamos o laço for novamente para percorrer todo o array e imprimir seus elementos.

Bons estudos! Estamos sempre aqui para ajudar :)

Resposta

#include

#include

#include

#define SIZE 20

int main(){

int i = 0, j, igual;

int array[SIZE];

srand(time(NULL)); /* Semente do gerador de números aleatórios */

do{

array[i] = 1 + rand() % SIZE; /* gera números aleatórios de 1 - 20, e armazena no array */

igual = 0; /* inicialmente dizemos que não existem números iguais no array */

for(j = 0; j

if(array[j]== array[i]){

igual = 1; /* em caso positivo a variável igual recebe o 1 */

}

}

if(igual == 0){ /* se não há números iguais então pode-se seguir gerando e armazenando outros números */

i++;

}

}while(i

/* exibe o array */

for(int k = 0; k

printf("%d ",array[k]);

}

return 0; /* indica que a execução foi bem-sucedida */

}