dedeboy 0 Denunciar post Postado Novembro 25, 2009 Olá estou com problema no algoritmo que desenvolvi num exercicio que dizia o seguinte: Ler 8 elementos em matriz A tipo vetor.Construir uma matriz B com mesma dimensão com elementos da matriz multiplicados por 5.Apresentar a matriz B em ordem cresente. Montar uma rotina de pesquisa binária, para pesquisar os elementos amazenados na Matriz BAté ai foi numa beleza,fiz a Matriz A, que ler,Multiplicar e coloca os elementos na ordem cresente, na rotina de pesquisa fiz o que o exercicio pediu. Só que na hora de pesquisar o numero na rotina de pesquisa de vez enquando ele diz que o numero solicitado não se encontra, só que o numero pesquisado esta no elemento que eu digite e que é mais estranho alguns elementos digitado ele mostra onde esta e qual posição.Gostaria que analizasse esse algoritmo e me mostrar onde eu estou errando na rotina de pesquisa.Por enquanto vou vendo aqui onde eu estou errando. []s var A,B: vetor[1..8] de inteiro I,J: inteiro X: inteiro Comeco,Meio,Final: inteiro Pesq: inteiro Resp: caractere Acha: logico inicio // Seção de Comandos {Rotina de entrada de dados} Escreval("Digite os 8 elementos da Matriz A:") Para I de 1 ate 8 passo 1 faca Leia(A[I]) fimpara Para I de 1 ate 8 passo 1 faca B[I]:= A[I] * 5 fimpara Para I de 1 ate 7 passo 1 faca Para J de I + 1 ate 8 faca Se(B[I] > B[J]) entao X:= B[I] B[I]:= B[J] B[J]:= X fimse fimpara fimpara { Trecho de Pesquisa} Resp:= "Sim" Enquanto (Resp = "Sim") ou (Resp = "S") FACA Escreva("Entre o Numero a ser Pesquisado:") Leia(Pesq) Comeco:= 1 Final:= 8 Acha:= Falso Enquanto (Comeco <= Final) e (Acha = Falso) faca Meio:= (Comeco + Final) div 2 int(Meio) se (Pesq = A[Meio]) entao Acha:= Verdadeiro senao se Pesq < Meio entao Final:= Meio - 1 senao Comeco:= Meio + 1 fimse fimse fimenquanto Se( Acha = verdadeiro) entao Escreval(Pesq, "Foi localizado na posição:", Meio) //Aqui vai mostrar a posição da indice e elemento da matriz senao Escreval(Pesq, "não foi localizado") fimse Escreva("Deseja Continuar?") // Aqui vai perguntar se quer fazer mais uma pesquisa Leia(Resp) fimenquanto {Rotina de saida de dados ordenados} Para I de 1 ate 8 passo 1 faca Escreva(B[I]) fimpara fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 26, 2009 Não é tão simples de fazer isso! de uma olhada nessa lógica: http://tools.assembla.com/svn/gustavo/ed2/matrix/matrix.pdf []s Compartilhar este post Link para o post Compartilhar em outros sites
dedeboy 0 Denunciar post Postado Novembro 26, 2009 Não é tão simples de fazer isso! de uma olhada nessa lógica: http://tools.assembla.com/svn/gustavo/ed2/matrix/matrix.pdf []s Então baixei o arquivo, mas entendi + ou -. []s Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 27, 2009 em algoritmo tente implementar q eu te ajudo! []s Compartilhar este post Link para o post Compartilhar em outros sites
dedeboy 0 Denunciar post Postado Novembro 27, 2009 Consegui resolver, mas não foi facil foi assim: Eu fiquei compilando passo a passo pra ver onde estava dando o conflito, daí percebi, que colocando os elementos na tela em ordem crescente e depois eu pesquisava esses numeros eles informava certinho a posição onde se encontrava amazenado, só que olhando o algoritmo livro não mostrava isso. Então eu lembrei que estava estudando que a função da matriz binária ela funciona para elementos organizados, então como os elementos estava desordenados nunca iria da certo, eu fiz o código para os numeros digitados ficasse em ordem crescente, entao eu digitava o numero e mostrava a posição amarzenada. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Valeu pela ajuda quitZAUMMM! Vai aí o código modificado. []s algoritmo "Matriz pesquisa binaria" // Função : Vai ler 8 elementos da Matriz A e multiplicar por 5 a matriz B e fazer um pesquisa binaria nos elementos amarzenados na Matriz B // Autor : Andre de Araujo // Data : 24/11/2009 // Seção de Declarações var A,B: vetor[1..8] de inteiro I,J: inteiro X: inteiro Comeco,Meio,Final: inteiro Pesq: inteiro Resp: caractere Acha: logico inicio // Seção de Comandos {Rotina de entrada de dados} Escreval("Digite os 8 elementos da Matriz A:") Para I de 1 ate 8 passo 1 faca Leia(A[I]) fimpara Para I de 1 ate 8 passo 1 faca B[I]:= A[I] * 5 fimpara Para I de 1 ate 7 passo 1 faca Para J de I + 1 ate 8 faca Se(B[I] > B[J]) entao X:= B[I] B[I]:= B[J] B[J]:= X fimse fimpara fimpara Para I de 1 ate 7 passo 1 faca Para J de I + 1 ate 8 faca Se(A[I] < A[J]) entao X:= A[I] A[I]:= A[J] A[J]:= X fimse fimpara fimpara { Trecho de Pesquisa} Resp:= "Sim" Resp:= "S" Enquanto (Resp = "Sim") ou (Resp = "S") FACA Escreva("Entre o Numero a ser Pesquisado:") Leia(Pesq) Comeco:= 1 Final:= 8 Acha:= Falso Enquanto (Comeco <= Final) e (Acha = Falso) faca Meio:= (Comeco + Final) div 2 se (Pesq = A[Meio]) entao Acha:= Verdadeiro senao se Pesq > A[Meio] entao Final:= Meio - 1 senao Comeco:= Meio + 1 fimse fimse fimenquanto Se( Acha = verdadeiro) entao Escreval(Pesq, "Foi localizado na posição:", Meio) //Aqui vai mostrar a posição da indice e elemento da matriz senao Escreval(Pesq, "não foi localizado") fimse Escreva("Deseja Continuar?") // Aqui vai perguntar se quer fazer mais uma pesquisa Leia(Resp) fimenquanto {Rotina de saida de dados ordenados} Para I de 1 ate 8 passo 1 faca Escreva(B[I]) fimpara fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 28, 2009 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites