Ir ao conteúdo
  • Cadastre-se

Problema impossível no visualg


Visitante

Posts recomendados

Seguinte: Tenho que criar um algoritmo que cadastre ATÉ 10 motos, e possa exibir e alterar os cadastros já efetuados. Mas depois que exibo, ele atribui automaticamente o valor do índice em 10, já que foi o último a ser consultado, e depois se tento cadastrar ele busca o índice 11. Segue para ver se vocês entendem:


// Função :
// Autor : Diego
// Data : 15/5/2013
// Seção de Declarações
var
o, p, q, modelod , cord: literal
opcao,i,j, n, anod , total: inteiro
fabric : vetor [1..10] de literal
cor: vetor [1..10] de literal
km : vetor [1..10] de real
modelo : vetor [1..10] de literal
ano: vetor [1..10] de inteiro

inicio
// Seção de Comandos
total <- 0
o <- "s"
p <- "s"
j <-1
repita
escreval ("Digite 1 para Cadastrar uma moto")
escreval ("Digite 2 para consultar uma moto já cadastrada por ano de fabricação")
escreval ("Digite 3 para consultar uma moto por modelo")
escreval ("Digite 4 para consultar uma moto por cor")
escreval ("Digite 5 para exibir todas as motos cadastradas")
escreval ("Digite 6 para alterar os dados de alguma moto")
escreval ("Digite 7 para excluir os dados de alguma moto")
escreval ("Digite 0 para sair")
leia (opcao)
limpatela
escolha opcao
caso 1
se (j<11) então

repita

limpatela

escreval ("Vamos então cadastrar uma moto. Você já tem ",(total)," motos cadastradas")
escreval ("Digite o nome do fabricante da moto")
leia (fabric[j])
repita
se ((fabric[j])="") então
escreval ("Você não pode inserir valores em branco! Por favor insira um nome de fabricante")
leia (fabric[j])
fimse
ate ((fabric[j])<>"")
escreval ("Digite o modelo da moto")
leia (modelo[j])
repita
se ((modelo[j])="")então
escreval ("Digite um nome de modelo válido")
leia (modelo[j])
fimse
ate (modelo[j]<>"")
escreval ("Digite o ano de fabricação")
leia (ano[j])
repita
se (ano[j]>2013) ou (ano[j]<1990) então
limpatela
escreval ("Ano inválido. Por favor insira um ano válido")
leia (ano[j])
fimse
ate (ano[j]<2014) e (ano[j]>1989)
escreval ("Digite a COR da moto")
leia (cor[j])
repita
se (cor[j]="")então
escreval ("Por favor informe a cor")
leia (cor[j])
fimse
ate (cor[j]<>"")
escreval ("Digite a quilometragem já rodada da moto")
leia (km[j])
repita
se (km[j]<0) então
escreval
("Você não pode digitar um valor negativo. Por favor insira um valor maior ou igual a zero.")
leia (km[j])
fimse
ate (km[j])>=0
escreval ("A moto ",(fabric[j])," modelo ",(modelo[j])," ",(ano[j])," foi cadastrada com sucesso!")
total <- (total+1)
j<-j+1
se (j<11)então

escreval ("Deseja cadastrar outra moto? Digite S para sim")
leia (p)
senao
escreval ("Você cadastrou o número máximo de motos. Selecione a opção de alterar")
escreval ("caso queira inserir dados")
p <- "n"

fimse

//limpatela


ate (p<>"s")
//limpatela
senao
escreval ("Opção indisponível no momento. Por favor utilize a opção 6 para alterar")
escreval ("e altere uma moto já cadastrada ou em branco")
fimse
caso 2
escreval ("Vamos consultar uma moto por ano de fabricação. Por favor informe o ano desejado")
leia (anod)
i <- 1
enquanto (anod<1990) ou (anod>2013) faca
escreval ("Ano inválido. Por favor insira um ano válido")
leia (anod)
fimenquanto
para j de 1 ate 10 faca
se (ano[j])= anod então
escreval ((i)," - ",(fabric[j]),", ",(modelo[j]),", ano ",(ano[j]),", cor ",(cor[j]),".")
fimse
fimpara

caso 3
escreval ("Vamos consultar uma moto por modelo. Digite o modelo desejado")
leia (modelod)
para j de 1 ate 10 faca
se ((modelo[j])=modelod) então
escreval ((i)," - ",(fabric[j]),", ",(modelo[j]),", ano ",(ano[j]),", cor ",(cor[j]),".")
fimse
fimpara

caso 4
escreval ("Vamos consultar uma moto por cor. Digite a cor desejada.")
leia (cord)
para j de 1 ate 10 faca
se (cord=(cor[j])) então
escreval ((i)," - ",(fabric[j]),", ",(modelo[j]),", ano ",(ano[j]),", cor ",(cor[j]),".")
fimse
fimpara

caso 5

escreval ("Motos cadastradas:")
para j de 1 ate 10 faca
escreval ((j)," - ",(fabric[j]),", ",(modelo[j]),", ano ",(ano[j]),", cor ",(cor[j]),".")
fimpara

caso 6

escreval ("Vamos alterar os dados de alguma moto")
para j de 1 ate 10 faca
escreval ((j)," - ",(fabric[j]),", ",(modelo[j]),", ano ",(ano[j]),", cor ",(cor[j]),".")
fimpara
escreval ("Digite o número da moto a ser alterada")
leia (n)
enquanto (n>10) ou (n<1) faca
escreval ("Número inválido. Por favor insira um dos números citados acima")
leia (n)
fimenquanto
escreval ("Você deseja alterar os dados da moto ",(fabric[n])," modelo ",(modelo[n]), " ano ",(ano[n]),". Confirma? (S/N)")
leia (q)
se (q="s") então
limpatela
escreval ("Digite o NOVO FABRICANTE da moto")
leia (fabric[n])
enquanto (fabric[n]="") faca
limpatela
escreval ("Você deve inserir um nome de fabricante! Por favor informe o fabricante")
leia (fabric[n])
fimenquanto
escreval ("Digite o NOVO ANO da moto")
leia (ano[n])
enquanto (ano[n]<1990) ou (ano[n]>2013) faca
limpatela
escreval ("Ano inválido. Por favor insira um ano válido.")
leia (ano[n])
fimenquanto
escreval ("Digite o NOVO MODELO da moto")
leia (modelo[n])
enquanto (modelo[n]="") faca
limpatela
escreval ("Você deve inserir um modelo. Por favor digite um modelo")
leia (modelo[n])
fimenquanto

escreval ("Digite a NOVA QUILOMETRAGEM da moto")
leia (km[n])
enquanto (km[n]<0) faca
limpatela
escreval ("Não existe quilometragem negativa! Por favor insira um valor positivo")
leia (km[n])
fimenquanto
escreval ("Digite a NOVA COR da moto")
leia (cor[n])
enquanto (cor[n]="")faca
limpatela
escreval ("Você deve inserir uma nova cor. Por favor informe a cor")
leia (cor[n])
fimenquanto
limpatela
para j de 1 ate 10 faca
se (n=j) então
km[j] <- km[n]
modelo[j] <- modelo[n]
fabric[j] <- fabric[n]
ano[j] <- ano[n]
cor[j] <- cor [n]
fimse
fimpara
fimse
caso 7
escreval ("Vamos excluir dados de uma moto")
para j de 1 ate 10 faca
escreval ((j)," - ",(fabric[j]),", ",(modelo[j]),", ano ",(ano[j]),", cor ",(cor[j]),".")
fimpara
escreval ("Digite o código da moto que deseja excluir")
leia (n)
enquanto (n>10) ou (n<1) faca
escreval ("Número inválido. Por favor insira um dos números citados acima")
leia (n)
fimenquanto
escreval ("ATENÇÃO: Essa operação excluirá a moto ",(fabric[n])," modelo ",(modelo[n]), " ano ",(ano[n]),". Confirma? (S/N)")
leia (q)
se (q="s") então
para j de 1 ate 10 faca
se (n=j) então
km[j] <- 0
modelo[j] <- " "
fabric[j] <- " "
ano[j] <- 0
cor[j] <- " "
fimse
fimpara
fimse
caso 0
fimalgoritmo
outrocaso
fimalgoritmo
fimescolha
escreval ("Deseja fazer outra operação? Digite S para sim")
leia (o)
limpatela

ate (o<>"s")

fimalgoritmo
algoritmo "exerciciogrande"

Como resolvo tal problema?

Link para o comentário
Compartilhar em outros sites

  • 5 meses depois...

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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!