Ir ao conteúdo
  • Cadastre-se

VisualG Vetor não adiciona novas entradas


Ir à solução Resolvido por Simon Viegas,

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

@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

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
  • Solução

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