Ir ao conteúdo

VisualG Vetor não adiciona novas entradas


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

Postado

Olá aos mestres do algoritmo com VisuAlg, tenho o seguinte algoritmo:

 

algoritmo "Estrutura Indexadas - Vetor(Array)"
// Seção de Declarações
var
indice, qtd_Veiculos, tot_Veiculos : inteiro
nome_veiculo: vetor [1..40] de caractere

inicio
// Seção de Comandos
escreval("Digite a Quantidade de Veículos para Cadastrar ou -1 Para Sair: ")
leia(qtd_Veiculos)
enquanto qtd_Veiculos <> -1 faca
   para indice de 1 ate qtd_Veiculos faca
      escreva("Digite o Nome do Veículo: ")
      leia(nome_veiculo[indice])
   fimpara
   tot_Veiculos <- 0
   tot_Veiculos <- (tot_Veiculos + (indice + 1))
   escreval("Digite a Quantidade de Veículos para Cadastrar ou -1 Para Sair: ")
   leia(qtd_Veiculos)
fimenquanto
para indice de 1 ate tot_Veiculos faca
   escreval("O Veículo ", nome_veiculo[indice], " tem o índice ", indice)
fimpara
fimalgoritmo


Estou usando vetor, o que acontece é o seguinte, por exemplo, digite dois veículos, quando ele retorna perguntando se quero encerrar, eu digo que quero incluir mais dois veículos, ao digitar -1 para sair, ele imprime somente os dois últimos veículos cadastrados e não 4 veículos, que deveria ser o correto, conforme figura anexa. Onde estou errando? Fico no aguardo de ajuda, muito grato.

 

Saida.png

  • Amei 1
Postado

@Montesuma Oliveira    aquele loop lá dentro do enquanto sempre começa em hum e vai até a qtd_veiculos , e assim você cadastrou dois e digita que vai cadastrar mais dois , aí ele volta naquele loop e preenche o vetor nas posições que já foram preenchidas antes , sobrepondo os dados , então seu código poderia ser assim  :

algoritmo "Estrutura Indexadas - Vetor(Array)"
var
  indice,qtd_Veiculos : inteiro
  tot_Veiculos,aux    : inteiro
  nome_veiculo        : vetor[1..40] de caractere
inicio
  enquanto qtd_Veiculos <> -1 faca
    escreval("Digite a Quantidade de Veículos para Cadastrar ou -1 Para Sair: ")
    leia(qtd_Veiculos)
    aux := tot_veiculos+1
    se qtd_veiculos <> -1 entao
      para indice de aux ate qtd_Veiculos+(aux-1) faca
        escreva("Digite o Nome do Veículo: ")
        leia(nome_veiculo[indice])
        tot_Veiculos <- tot_Veiculos + 1
      fimpara
    fimse
  fimenquanto
  para indice de 1 ate tot_Veiculos faca
    escreval("O Veículo ", nome_veiculo[indice], " tem o índice ", indice)
  fimpara
fimalgoritmo

mas mesmo assim ele ficou confuso ,   creio que seria melhor uma modificação na estrutura , e então ele poderia ser assim  :

algoritmo "Estrutura Indexadas - Vetor(Array)_2"
var
  indice,contador  : inteiro
  tot_Veiculos,aux : inteiro
  nome_veiculo     : vetor[1..40] de caractere
  sair             : caractere
inicio
  enquanto sair <> "n" faca
    contador := contador + 1
    escreva("Digite o Nome do Veículo: ")
    leia(nome_veiculo[contador])
    escreva("Queres Cadastrar Outro Veículo  S/N ")
    leia(sair) // Aqui apenas Tecle ENTER
  fimenquanto
  escreval
  para indice de 1 ate contador faca
    escreval("O Veículo ", nome_veiculo[indice], " tem o índice ", indice)
  fimpara
fimalgoritmo

 

  • Membro VIP
  • Solução
Postado

@Montesuma Oliveira, bom dia.

 

Qual o enunciado completo desse "exercício"? as característica do problema dependem do que foi solicitado.

 

No aguardo.

adicionado 35 minutos depois

Seguindo a mesma base do código original:

algoritmo "Estrutura Indexadas - Vetor(Array)"
var
   i :inteiro
   qtdVeiculos :inteiro
   totVeiculos :inteiro
   nomeVeiculo :vetor [1..3] de caractere
inicio
   qtdVeiculos <- 0 //obs.: no VisuAlg não precisa, pois já estará com 0
   enquanto qtdVeiculos <> -1 faca
      escreval("Digite a Quantidade de Veículos para Cadastrar ou -1 Para Sair: ")
      leia(qtdVeiculos)
      para i de 1 ate qtdVeiculos faca
         totVeiculos <- totVeiculos + 1
         escreva ("Digite o Nome do Veículo: ")
         leia(nomeVeiculo[totVeiculos])
      fimPara
   fimEnquanto
   para i de 1 ate totVeiculos faca
      escreval("O Veículo ", nomeVeiculo[i], " tem o índice ", i)
   fimPara
fimAlgoritmo


Como citado, as características vão depender do enunciado. Um ponto que acho que já seria interessante tratar é o limite de cadastros. Nesse base acima, para facilitar os testes, deixe apenas com 3 veículos.

 

Outro ponto é: só vai precisar cadastrar o nome do veículo, mesmo?

  • Curtir 1

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!