Professor, eu já tinha visto um algoritmo que sorteia os valores num vetor sem repetir, acho até bem simples, olha aqui: const inteiro tam = 10 inteiro vet[tam], cont = 0 logico tem_igual //Estrutura para sortear números para um vetor sem repetir NENHUM valor. enquanto (cont < tam) { tem_igual = falso vet[cont] = sorteia(1, tam*2) para (inteiro cont_bus = 0; cont_bus < cont; cont_bus ++) { se (vet[cont] == vet[cont_bus]) { tem_igual = verdadeiro pare } } se (nao tem_igual) { cont ++ } }
Olá Quintino. Não há uma forma automática para evitar repetições não. Você mesmo precisa programar isso, para cada novo valor sorteado é necessário percorrer o vetor e verificar se ele já foi sorteado, se sim, descarta e sorteia outro, senão, salva no vetor.
Opa amigo, há um algoritmo que fiz que resolve justamente esse problema: (todas as variáveis usadas você precisa declará-las antes, claro) //Estrutura para sortear números para um vetor sem repetir NENHUM valor. enquanto (cont < tam) { tem_igual = falso vet[cont] = sorteia(1, tam*2) para (inteiro cont_bus = 0; cont_bus < cont; cont_bus ++) { se (vet[cont] == vet[cont_bus]) { tem_igual = verdadeiro pare } } se (nao tem_igual) { cont ++ } } Comentários: esse "tem_igual" é uma variável do tipo logico, e verifica justamente se há pelo menos 1 valor igual, se tiver, ele para a estrutura 'para' e é verificado lá no final: se **não** tem igual então avançamos para o próximo elemento do vetor. Caso contrário, tudo é repetido, até que o valor sorteado seja diferente de todos os já sorteados.
Achei bem interessante seus métodos de ordenação, porém eu aprendi esse daqui, será que ele é mais eficiente? 🤔 //Ordenando os valores do vetor pela técnica do algoritmo de ordenação Bubble Sort inteiro cont_p, cont_s, aux = 0 para (cont_p = 0; cont_p < (tam - 1); cont_p ++) { para (cont_s = cont_p + 1; cont_s < tam; cont_s ++) { se (vet[cont_p] > vet[cont_s]) { aux = vet[cont_p] vet[cont_p] = vet[cont_s] vet[cont_s] = aux } } } Perceba que minhas variáveis "cont_p" e "cont_s" referem-se justamente ao contador principal e ao contador secundário. Cada contador é como se fosse uma seta, que vai comparando valor por valor. Como pode ser visto, o contador secundário percorre todas as posições que estão "à frente" do contador principal. A cada vez que o valor do vetor na posição do 'cont_p' for maior que a posição do 'cont_s', ocorre a troca. Assim, todos os valores anteriores ao 'cont_p' estão seguramente ordenados.
Olá Issac. Parece que não entendeu esta aula rsrsrs. Ficou confusa? Difícil de entender? O algoritmo que você postou é exatamente o mesmo algoritmo que apresentei, possui o mesmo desempenho. Inclusive, apresento uma forma de torna-lo um pouco mais eficiente trocando o primeiro 'para' por um 'enquanto'.
Vc explica mto bem! Parabéns!
Maravilhosa explicação, tão simples, grato pela instrução. estava procurando isso.
Fico feliz em saber que ajudou.
Obrigado pelo feedback Washington.
Salvou eu no trabalho, muito obg irmão ♥️
Muito obrigado!! Me salvou muito
Por nada Artur
Muito bom, vlw
Valeu Gustavo 👍
@@programeseufuturo se tiver algum vídeo de como fazer o teste de mesa com método bolha me manda o link
Esse eu vou ficar te devendo Gustavo rsrs
@@programeseufuturo tudo bem já aprendi, mas valeu assim mesmo.
top!!!!
muito bom, faz um em ordem decrescente
Para fazer em ordem decrescente basta inverter o teste feito na comparação de se(vet[i] > vet[i+1]) para se(vet[i] < vet[i+1])
Professor, eu já tinha visto um algoritmo que sorteia os valores num vetor sem repetir, acho até bem simples, olha aqui:
const inteiro tam = 10
inteiro vet[tam], cont = 0
logico tem_igual
//Estrutura para sortear números para um vetor sem repetir NENHUM valor.
enquanto (cont < tam) {
tem_igual = falso
vet[cont] = sorteia(1, tam*2)
para (inteiro cont_bus = 0; cont_bus < cont; cont_bus ++) {
se (vet[cont] == vet[cont_bus]) {
tem_igual = verdadeiro
pare
}
}
se (nao tem_igual) {
cont ++
}
}
Bacana Isaac, mas perceba que são problemas diferentes. Na aula 125 o problema a ser tratado é ordenação, no seu exemplo é a não repetição de valores.
Tem números que se repetem como eliminar??
Olá Quintino.
Não há uma forma automática para evitar repetições não. Você mesmo precisa programar isso, para cada novo valor sorteado é necessário percorrer o vetor e verificar se ele já foi sorteado, se sim, descarta e sorteia outro, senão, salva no vetor.
@@programeseufuturo valeu obrigado!
Opa amigo, há um algoritmo que fiz que resolve justamente esse problema:
(todas as variáveis usadas você precisa declará-las antes, claro)
//Estrutura para sortear números para um vetor sem repetir NENHUM valor.
enquanto (cont < tam) {
tem_igual = falso
vet[cont] = sorteia(1, tam*2)
para (inteiro cont_bus = 0; cont_bus < cont; cont_bus ++) {
se (vet[cont] == vet[cont_bus]) {
tem_igual = verdadeiro
pare
}
}
se (nao tem_igual) {
cont ++
}
}
Comentários: esse "tem_igual" é uma variável do tipo logico, e verifica justamente se há pelo menos 1 valor igual, se tiver, ele para a estrutura 'para' e é verificado lá no final: se **não** tem igual então avançamos para o próximo elemento do vetor. Caso contrário, tudo é repetido, até que o valor sorteado seja diferente de todos os já sorteados.
Achei bem interessante seus métodos de ordenação, porém eu aprendi esse daqui, será que ele é mais eficiente? 🤔
//Ordenando os valores do vetor pela técnica do algoritmo de ordenação Bubble Sort
inteiro cont_p, cont_s, aux = 0
para (cont_p = 0; cont_p < (tam - 1); cont_p ++) {
para (cont_s = cont_p + 1; cont_s < tam; cont_s ++) {
se (vet[cont_p] > vet[cont_s]) {
aux = vet[cont_p]
vet[cont_p] = vet[cont_s]
vet[cont_s] = aux
}
}
}
Perceba que minhas variáveis "cont_p" e "cont_s" referem-se justamente ao contador principal e ao contador secundário.
Cada contador é como se fosse uma seta, que vai comparando valor por valor. Como pode ser visto, o contador secundário percorre todas as posições que estão "à frente" do contador principal. A cada vez que o valor do vetor na posição do 'cont_p' for maior que a posição do 'cont_s', ocorre a troca. Assim, todos os valores anteriores ao 'cont_p' estão seguramente ordenados.
Olá Issac. Parece que não entendeu esta aula rsrsrs. Ficou confusa? Difícil de entender?
O algoritmo que você postou é exatamente o mesmo algoritmo que apresentei, possui o mesmo desempenho. Inclusive, apresento uma forma de torna-lo um pouco mais eficiente trocando o primeiro 'para' por um 'enquanto'.