Ir ao conteúdo
  • Cadastre-se
Visitante

Problema impossível no visualg

Recommended Posts

Visitante

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×