lincon_ 0 Denunciar post Postado Julho 14, 2008 olá pessoal, to com problema nesse algoritmo faca um algoritmo que leia um vetor a de 30 posicoes. em seguida compacte o vetor, retirando os valores nulos e negativos. coloque o resultado num vetor b. beleza, eu fiz, só que quando fui testar vi que quando os valores de a são nulos ou negativos o vetorb assume o valor zero, e não os elimina.. alguém tem idéia de como fazer corretamente? segue o que eu fiz, no visualg algoritmo "semnome" var veta: vetor [1..30] de inteiro vetb: vetor [1..30] de inteiro k:inteiro inicio ...para k de 1 ate 30 faca ......leia (veta[k]) ...fimpara ...para k de 1 ate 30 faca ......se (veta[k] > 0) entao ...........vetb[k]<-veta[k] ......fimse ...fimpara ...para k de 1 ate 30 faca ......escreva (vetb[k]) ...fimpara fimalgoritmo é isso aí. valeu! Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Julho 14, 2008 isso acontece pq você esta varrendo o vetor b todo, faça o mesmo if quando for apresentar o vetorb, filtrando apenas os positivos. O vetor b aparece como zero pq nao foi atribuido nenhum valor a ele e provavelmente o visualg faz isso. Outra coisa que você pode fazer tb é, ler o veta com aquele if ali filtrando apenas os positivos, ordenar o vetor de modo a nao ficar nenhum valor zerado ou negativo, ou seja, você varre ele e onde tiver o zero ou negativo, joga o proximo elemento por cima, e colocar um contador q incrementa a cada iteração q o numero for positivo. Depois você usar o contador pra dizer pro for quantos loops ele vai fazer. :D Compartilhar este post Link para o post Compartilhar em outros sites
lincon_ 0 Denunciar post Postado Julho 14, 2008 isso acontece pq você esta varrendo o vetor b todo, faça o mesmo if quando for apresentar o vetorb, filtrando apenas os positivos. O vetor b aparece como zero pq nao foi atribuido nenhum valor a ele e provavelmente o visualg faz isso. Outra coisa que você pode fazer tb é, ler o veta com aquele if ali filtrando apenas os positivos, ordenar o vetor de modo a nao ficar nenhum valor zerado ou negativo, ou seja, você varre ele e onde tiver o zero ou negativo, joga o proximo elemento por cima, e colocar um contador q incrementa a cada iteração q o numero for positivo. Depois você usar o contador pra dizer pro for quantos loops ele vai fazer. :D beleza, é isso mesmo http://forum.imasters.com.br/public/style_emoticons/default/clap.gif valeu Compartilhar este post Link para o post Compartilhar em outros sites
gRoOvE 0 Denunciar post Postado Julho 15, 2008 http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Julho 15, 2008 ---Título Editado--- duvida com algoritmo http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Retirando os valores nulos e negativos do vetor Compartilhar este post Link para o post Compartilhar em outros sites
julinharr 0 Denunciar post Postado Agosto 12, 2008 algoritmo "semnome" var veta: vetor [1..30] de inteiro vetb: vetor [1..30] de inteiro k:inteiro inicio ...para k de 1 ate 30 faca ......leia (veta[k]) ...fimpara ...para k de 1 ate 30 faca ......se (veta[k] > 0) entao cont<-cont+1; ...........vetb[cont]<-veta[k] ......fimse ...fimpara ...para k de 1 ate cont faca ......escreva (vetb[k]) ...fimpara fimalgoritmo é isso ae! Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Agosto 14, 2008 para k de 1 ate 30 faca......se (veta[k] > 0) entao cont<-cont+1; ...........vetb[cont]<-veta[k] ......fimse ...fimpara P/ que fazer outro loop só p/ filtrar os números positivos? Deixe o if e a escrita dentro do loop de leitura.. algoritmo "semnome" var veta: vetor [1..30] de inteiro vetb: vetor [1..30] de inteiro k,cont:inteiro inicio cont = 0 para k de 1 ate 30 faca leia (veta[k]) se (veta[k] > 0) vetb[cont] = veta[k] cont++ fim se fimpara fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites