Ir ao conteúdo
  • Cadastre-se

VisualG Espaços em branco no vetor (marcado com 0)


Posts recomendados

Caros, boa noite. 

 

Estou desenvolvendo um algorítimo e tenho um problema que não consigo resolver. Pois bem ... Eu criei um vetor para armazenar inteiros e mais dois vetores para armazenar aqueles que são impares e outro para armazenar os que são pares desse primeiro vetor. Mas sempre que inicializo o código fica uns 0 sobre os índices que não estão sendo utilizados, exemplo tem somente 4 pares ai o vetor é de 10 índices e fica aparecendo 6 dígitos 0 sobre o vetor além dos números pares. Segue o código para vocês assimilarem melhor: 

 

algoritmo "tira0"

var

   par: vetor [1..10] de inteiro
   impar: vetor [1..10] de inteiro
   num: vetor [1..10] de inteiro
   i: inteiro


inicio
   para i de 1 ate 10 faca
      Leia (num )

      se num %2 = 0 entao
         par <- num
      senao
         se num %2 <> 0 entao

            impar <- num
         fimse
      fimse
   fimpara

   para i de 1 ate 10 faca
      Escreval ("Par:", par )
   fimpara
   Escreval ()
   para i de 1 ate 10 faca

      Escreval ("Impar:", impar )
   fimpara
fimalgoritmo

 

Eu acho que teria que mudar o índice do meu vetor para a quantidade de pares e impares, mas não sei como fazer isso. Me ajudem, por favor sou novato ! 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@GR Carvalho    você precisa colocar o índice do vetor na hora de pegar os dados  ali no leia e isso seria assim  :

leia(num[i])

e depois do senao não precisa comparar novamente não , pois se não for par é lógico que será ímpar ,  e na hora de imprimir precisa colocar o índice do vetor também  .

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Revendo alguns detalhes:

 

1#

10 horas atrás, GR Carvalho disse:

Mas sempre que inicializo o código fica uns 0 sobre os índices que não estão sendo utilizados, exemplo tem somente 4 pares ai o vetor é de 10 índices e fica aparecendo 6 dígitos 0 sobre o vetor além dos números pares.

 

Isso ocorre porque se o vetor tem 10 posições, ele terá necessariamente já armazenado 10 números. Pense assim... ao usar um leia(), você não está "inserindo dados" no vetor, mas sim "alterando os que estão lá". É a mesma lógica do HD do computador... ao copiar algo nele, "nada é criado, mas sim alterado" (de modo que seja recuperado e corresponda ao que foi copiado, é claro).

 

Um detalhe importante é que, ao Visualg criar/usar uma variáveis no computador, ela já faz o favor de inicializá-las (inserir valores iniciais sozinho), ou seja, todas as variáveis globais numérias ficariam com 0; os caracteres ficam com ""; os lógicos ficam com FALSO etc. Daí, apenas 4 estarão com valores novos (podendo inclusive ser 0 também) e o restante vai ficar com o que já tem (no caso 0). 

 

Experimente imprimir um vetor sem "inserir" nada nele... vai aparecer um monte de 0. Pois ao iniciar o programa, ele já ficam assim. Outra forma de ver isso é ir pressionando F8 (em vez de F9). Fique de olho no lado direito em "Áreas das variáveis de memórias (Globais e Locais). Os valores já ficam "zerados" de cara.

 

 

Obs.: nem toda linguagem de programação inicializa as variáveis ao rodar o programa. Isso é um "favor" que é feito pelo Visualg. No Pascal é a mesma coisa. Já no C, C++, Java etc, não! Lá é apenas reservado na memória... e o programa fica com o "lixo de memória que estava lá". Nesses últimos, a inicialização das variáveis é feita de modo manual....

 

 

 

 

2#

Sobre:

10 horas atrás, devair1010 disse:

@GR Carvalho    você precisa colocar o índice do vetor na hora de pegar os dados  ali no leia e isso seria assim  :


leia(num[i])

e depois do senao não precisa comparar novamente não , pois se não for par é lógico que será ímpar ,  e na hora de imprimir precisa colocar o índice do vetor também  .

 

Como @GR Carvalho deu exemplo de resultado, suponho que o código original esteja rodando.. ou seja, por algum motivo os [i ] sumiram de desse código aqui no Fórum... Como é sabido, os [i ] (tudo junto) aqui no Fórum "bugam" e se transformam em tag para fazer o itálico. Mas em fim, essas observações são pertinente, mas refeririam a problemas secundários ao relatado, ou seja, que em relação ao código visualizado aqui no Fórum, também precisariam ser corrigidos.

 

 

 

3#

Como suposto, o motivo de "aparecer zeros" na exibição está citado no 1#. Agora para achar uma solução para isso, poderia justamente fazer o que você sugere:

 

10 horas atrás, GR Carvalho disse:

Eu acho que teria que mudar o índice do meu vetor para a quantidade de pares e impares, mas não sei como fazer isso. Me ajudem, por favor sou novato ! 

 

Tomemos como base esse código abaixo: (basicamente inseri o índice [i ] nos vetores e coloquei o recurso para gerar automaticamente. Deixei a questão do senão com você) .

algoritmo "tira0"
var
   num   :vetor [1..10] de inteiro
   par   :vetor [1..10] de inteiro
   impar :vetor [1..10] de inteiro
   i     :inteiro

inicio
   ALEATORIO -20,100 //preenche os leia() automaticamente com valores aleatorio
   para i de 1 ate 10 faca
      leia(num[i])
      se num[i] % 2 = 0 entao //se for par
         par[i] <- num[i]
      senao
         se num[i] %2 <> 0 entao //se for ímpar
            impar[i] <- num[i]
         fimSe
      fimSe
   fimPara
   ALEATORIO OFF //encerra a geralção de número aleatórios
   //para parar de usar, basta apagar essas duas linhas ou colocar 2 "/" antes
   para i de 1 ate 10 faca
      escreval ("Par:",par[i])
   fimPara
   escreval ()
   para i de 1 ate 10 faca
      escreval ("Impar:",impar[i])
   fimPara
fimalgoritmo

 

Então, em vez de usar o mesmo índice i para o vetor par[] e impar[], você pode criar mais duas variáveis, ex: indP e indI (de "índice Par" e "índice Ímpar). Daí, quando um número for par, atualiza o índice indP somando 1 a ele e usa esse índice no vetor correspondente... algo como par[indP]. A mesma analogia para o vetor de ímpar. Na hora de exibir, usa o indP no para do dos pares, e indI no para dos ímpares.

 

 

 

***

 

Dúvidas, críticas, sugestões é só postar,

 

No aguardo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!