Respostas no Fórum
-
AutorPosts
-
2 de abril de 2021 às 12:37 em resposta a: M04A18 – Busca Binária em Vetores – Módulo 04: Variáveis compostas #64233Filipe GasparParticipante
Peço desculpa pela falta de formatação do código tentei colocar como code mas não funcionou, peço desculpa por esse fato.
Solicito que o post seja apagado do fórum, afim de evitar poluição visual do mesmo.
Peço desculpa pelo sucedido mas não consigo editar o post afim de corrigir o problema.2 de abril de 2021 às 12:35 em resposta a: M04A14 – Exercício 68 – Jogo Campo Minado – Módulo 04: Variáveis compostas #64232Filipe GasparParticipantePeço desculpa pela falta de formatação do código tentei colocar como code mas não funcionou, peço desculpa por esse fato.
Solicito que o post seja apagado do fórum, afim de evitar poluição visual do mesmo.
Peço desculpa pelo sucedido mas não consigo editar o post afim de corrigir o problema.2 de abril de 2021 às 12:25 em resposta a: M04A18 – Busca Binária em Vetores – Módulo 04: Variáveis compostas #64231Filipe GasparParticipantePeço por favor que se possível seja removido o post anterior tentei colocar como código mas sem sucesso. peço desculpa pelo sucedido.
É isso mesmo na resolução do exercício, o método proposto acarreta em falha caso o ultimo item seja a chave .
Peço desculpa não ter colocado com código. Fica então o código com o meu exemplo de lógica que já tem o problema corrigido.programa { inclua biblioteca Util funcao inicio() { //A busca binária só funciona se o vetor estiver em ordem crescente inteiro vet[10] inteiro pos = 0 logico encontrado //Ciclo para preeencher o vetor com números aleatórios enquanto(pos < Util.numero_elementos(vet)){ vet[pos] = sorteia(1,20) encontrado = falso //na primeira execução o valor não é repetido para(inteiro i = 0; i < pos; i++){ // Ciclo vai da posição 0 até á ultima posição onde foi gerado um número se(vet[pos] == vet[i]){ //Se o valor for igal vamos gerar um novo valor encontrado = verdadeiro //encoutrou o valor impede o incremento da posição no vetor } } se(nao encontrado){ //só incrementa a posição se o valor não for repetido ou seja não foi encontrado pos++ } } //ciclo para mostar o vetor gerado escreva("-----------------------------------\n") escreva("O vetor gerado foi: \n") para(inteiro p = 0; p < Util.numero_elementos(vet); p++){ Util.aguarde(300) escreva(vet[p]," ") } escreva("\n") //Ordenando o vetor inteiro aux = 0 //variavel auxiliar para a ordenação do vetor escreva("\n======================================================== \n") escreva(" Estou a colocar em ordem crescente! Por favor aguarde! \n") Util.aguarde(1500) para(inteiro p = 0; p < (Util.numero_elementos(vet)-1); p++){ //Ciclo para o ponteiro principal que vai da posição 0 até á Penúltimo posição. Que ocorre imediatamente antes do último para(inteiro s = (p+1); s < Util.numero_elementos(vet); s++){ //Ciclo para o ponteiro secundário que vai da posição p + 1, posição seguinte ao p, até ao ultimo elemento do vetor se(vet[p] > vet[s]){ //Na primeira execuçaõ verifica se vet[0] é menor que vet[1] se for faz a troca ou swap, e assim consecutivamente vet[1] é menor que vet[2] até terminar o ciclo aux = vet[p] vet[p] = vet[s] vet[s] = aux } } } //Mostra o vetor por ordem crescente escreva("\n--------------------------------------- \n") escreva("O vetor colocado em ordem Crescente: \n") para(inteiro p = 0; p < Util.numero_elementos(vet); p++){ Util.aguarde(300) escreva(vet[p]," ") } escreva("\n") //Busca binária //A busca binária só funciona se o vetor estiver em ordem crescente inteiro chave logico encontrouChave escreva("\n------------------------------------- \n") escreva("Qual número deseja perquisar: ") leia(chave) encontrouChave = falso //até agora ainda não encontrou a chave inteiro ini = 0, fim = (Util.numero_elementos(vet)-1), meio = 0 enquanto(ini <= fim){ meio = (ini + fim) / 2//Calculo do meio do vetor se(vet[meio] == chave){ encontrouChave = verdadeiro pare//como encontrou a chave vai parar o ciclo }senao{ se(chave > vet[meio]){ //se o valor da chave for maior que o valor no vetor na posição meio ini = meio +1 }senao{ //se o valor da chave for menor que o valor no vetor na posição meio fim = meio -1 } } } se(encontrouChave){ //Verifica se encontrou a chave dentro do vetor escreva("\n") escreva("O valor ", chave, " foi encontrado na posição ", meio, "\n") }senao{ escreva("\n") escreva("Infelizmente o valor ", chave, " não foi encontrado no vetor! \n") } } }
2 de abril de 2021 às 12:17 em resposta a: M04A18 – Busca Binária em Vetores – Módulo 04: Variáveis compostas #64229Filipe GasparParticipanteÉ isso mesmo na resolução do exercício, o método proposto acarreta em falha caso o ultimo item seja a chave .
Peço desculpa não ter colocado com código. Fica então o código com o meu exemplo de lógica que já tem o problema corrigido.programa { inclua biblioteca Util funcao inicio() { //A busca binária só funciona se o vetor estiver em ordem crescente inteiro vet[10] inteiro pos = 0 logico encontrado //Ciclo para preeencher o vetor com números aleatórios enquanto(pos < Util.numero_elementos(vet)){ vet[pos] = sorteia(1,20) encontrado = falso //na primeira execução o valor não é repetido para(inteiro i = 0; i < pos; i++){ // Ciclo vai da posição 0 até á ultima posição onde foi gerado um número se(vet[pos] == vet[i]){ //Se o valor for igal vamos gerar um novo valor encontrado = verdadeiro //encoutrou o valor impede o incremento da posição no vetor } } se(nao encontrado){ //só incrementa a posição se o valor não for repetido ou seja não foi encontrado pos++ } } //ciclo para mostar o vetor gerado escreva("-----------------------------------\n") escreva("O vetor gerado foi: \n") para(inteiro p = 0; p < Util.numero_elementos(vet); p++){ Util.aguarde(300) escreva(vet[p]," ") } escreva("\n") //Ordenando o vetor inteiro aux = 0 //variavel auxiliar para a ordenação do vetor escreva("\n======================================================== \n") escreva(" Estou a colocar em ordem crescente! Por favor aguarde! \n") Util.aguarde(1500) para(inteiro p = 0; p < (Util.numero_elementos(vet)-1); p++){ //Ciclo para o ponteiro principal que vai da posição 0 até á Penúltimo posição. Que ocorre imediatamente antes do último para(inteiro s = (p+1); s < Util.numero_elementos(vet); s++){ //Ciclo para o ponteiro secundário que vai da posição p + 1, posição seguinte ao p, até ao ultimo elemento do vetor se(vet[p] > vet[s]){ //Na primeira execuçaõ verifica se vet[0] é menor que vet[1] se for faz a troca ou swap, e assim consecutivamente vet[1] é menor que vet[2] até terminar o ciclo aux = vet[p] vet[p] = vet[s] vet[s] = aux } } } //Mostra o vetor por ordem crescente escreva("\n--------------------------------------- \n") escreva("O vetor colocado em ordem Crescente: \n") para(inteiro p = 0; p < Util.numero_elementos(vet); p++){ Util.aguarde(300) escreva(vet[p]," ") } escreva("\n") //Busca binária //A busca binária só funciona se o vetor estiver em ordem crescente inteiro chave logico encontrouChave escreva("\n------------------------------------- \n") escreva("Qual número deseja perquisar: ") leia(chave) encontrouChave = falso //até agora ainda não encontrou a chave inteiro ini = 0, fim = (Util.numero_elementos(vet)-1), meio = 0 enquanto(ini <= fim){ meio = (ini + fim) / 2//Calculo do meio do vetor se(vet[meio] == chave){ encontrouChave = verdadeiro pare//como encontrou a chave vai parar o ciclo }senao{ se(chave > vet[meio]){ //se o valor da chave for maior que o valor no vetor na posição meio ini = meio +1 }senao{ //se o valor da chave for menor que o valor no vetor na posição meio fim = meio -1 } } } se(encontrouChave){ //Verifica se encontrou a chave dentro do vetor escreva("\n") escreva("O valor ", chave, " foi encontrado na posição ", meio, "\n") }senao{ escreva("\n") escreva("Infelizmente o valor ", chave, " não foi encontrado no vetor! \n") } } }
Bons estudos.
Peço desculpa ainda não tinha utilizado o fórum. -
AutorPosts