Ir para conteúdo

POWERED BY:

Arquivado

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

carcamilo

Algoritmo para verificar qual mês foi digitado

Recommended Posts

Boa tarde.

Não estou conseguindo resolver esse algoritmo, alguém pode me ajudar?

A situação é a seguinte:

Supondo que eu já tenha um vetor (Meses), já preenchido com 12 literais, onde em cada posição exista o nome de um mês.

terei que fazer 10 leituras armazenando-as em um vetor, onde em cada leitura o usuário irá digitar um número entre 1 e 12 ( representando o número de um mês). Após a digitação de todas as 10 leituras mostrar na tela o nome da cada um dos meses.

 

Eu consegui fazer isso, mas ele não esta exibindo os meses corretamente.

algoritmo "teste."

tipo TSaldo = registro
nomeDoMes,mes: caractere
saldo: real
fimregistro
var
VMes : vetor[0..12] de TSaldo
cont,me: inteiro
mes: vetor[0..10] de caractere
inicio
para cont de 1 ate 12 faca
VMes[1].nomeDoMes<-"Janeiro"
VMes[2].nomeDoMes<-"Fevereiro"
VMes[3].nomeDoMes<-"Março"
VMes[4].nomeDoMes<-"Abril"
VMes[5].nomeDoMes<-"Maio"
VMes[6].nomeDoMes<-"Junho"
VMes[7].nomeDoMes<-"Julho"
VMes[8].nomeDoMes<-"Agosto"
VMes[9].nomeDoMes<-"Setembro"
VMes[10].nomeDoMes<-"Outubro"
VMes[11].nomeDoMes<-"Novembro"
VMes[12].nomeDoMes<-"Dezembro"
fimpara
para cont de 1 ate 10 faca
escreva("Informe um mês do ano(1-12): ")
leia(me)
se (me >0) e (me < 13) entao
se(me = VMes[cont].nomeDoMes) entao
mes[cont]<-VMes[cont].nomeDoMes
fimse
fimse
fimpara
para cont de 1 ate 10 faca
escreval("Mês:","",mes[cont])
fimpara
fimalgoritmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

apenas alterar isso:

se(me = VMes[cont].nomeDoMes) entao
     mes[cont]<-VMes[cont].nomeDoMes

fimse
para:
mes[cont] <- VMes[me].nomeDoMes

ficando:

para cont de 1 ate 10 faca
      escreva("Informe um mês do ano(1-12): ")
      leia(me)
      se (me >0) e (me < 13) entao
           mes[cont] <- VMes[me].nomeDoMes
      fimse
fimpara

Explicando:

1 - No seu codigo, você verificou se "me" é igual Vmes[mes] ou seja, so vai salvar se for o mes digitado.

Uma verificação se tem o mes, vc ja faz qnd coloca " (mes > 0 e mes < 13) " e como vc setou o vetor já vai fica certo.

2 - Você colocou "mes[cont]<-VMes[cont].nomeDoMes" ou seja. sempre irá viim na ordem 1,2,3,4,5,6...

Mudei para "mes[cont] <- VMes[mes].nomeDoMes". Dessa forma, a posição do vetor irá ficar em ordem com o nome do mes correto na posição informada pela pessoa (variavel me).

 

Obs: Caso você queira que sempre digite e não passe nenhum sem nada, você deve utiliar o "enquanto"

 

--------------

Outro erro:

para cont de 1 ate 12 faca
      VMes[1].nomeDoMes<-"Janeiro"
      VMes[2].nomeDoMes<-"Fevereiro"
      VMes[3].nomeDoMes<-"Março"
      VMes[4].nomeDoMes<-"Abril"
      VMes[5].nomeDoMes<-"Maio"
      VMes[6].nomeDoMes<-"Junho"
      VMes[7].nomeDoMes<-"Julho"
      VMes[8].nomeDoMes<-"Agosto"
      VMes[9].nomeDoMes<-"Setembro"
      VMes[10].nomeDoMes<-"Outubro"
      VMes[11].nomeDoMes<-"Novembro"
      VMes[12].nomeDoMes<-"Dezembro"
fimpara

Você não precisa desse "para cont de 1 ate 12 faca".

Como você que vai setar o vetor, você não precisa desse Loop.

ficando apenas assim:

VMes[1].nomeDoMes<-"Janeiro"
VMes[2].nomeDoMes<-"Fevereiro"
VMes[3].nomeDoMes<-"Março"
VMes[4].nomeDoMes<-"Abril"
VMes[5].nomeDoMes<-"Maio"
VMes[6].nomeDoMes<-"Junho"
VMes[7].nomeDoMes<-"Julho"
VMes[8].nomeDoMes<-"Agosto"
VMes[9].nomeDoMes<-"Setembro"
VMes[10].nomeDoMes<-"Outubro"
VMes[11].nomeDoMes<-"Novembro"
VMes[12].nomeDoMes<-"Dezembro"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Joew, eu já tinha conseguido fazer usando um exemplo aqui do forum, mas muito obrigado.

Estou com uma outra dúvida, esta dando um erro em uma outra parte, vc poderia me ajudar?

Tenho que mostrar os valores em ordem decrescente, mas não consigo fazer a comparação, da um erro.

Isso é só uma parte, mas da erro aqui: se (Dados[Op].Soma < Dados[Op+1].Soma) entao, fala que tinha que ter i então.
Op<-0
Ult<-13
enquanto Ult<>0 faca
enquanto Op <> Ult faca
se (Dados[Op].Soma < Dados[Op+1].Soma) entao
fimse
Op<-Op+1
fimenquanto
Op<-0
Ult<-Ult-1
fimenquanto

Compartilhar este post


Link para o post
Compartilhar em outros sites

A ideia é você arrumar o vetor e depois você mostra na tela.

 

para arrumar o vetor em ordem decrescente, você pode usar está logica:

para i de 1 ate 9 faça
   para j de (i+1) até 10 faça
        se vetor[i] < vetor[j] então
           aux <- vetor[i];
           vetor[i] <- vetor[j];
           vetor[j] <- aux;
        fim_se
  fimpara
fimpara

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Sabrina, me ajudou muito, mais que o professor de ministra a matéria. Desculpa pelo Joew, agora que vi que era mulher. Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.