Ir ao conteúdo
  • Cadastre-se

Portugol Algoritmos dias passados em portugol


Posts recomendados

Bom dia pessoal!

Estou iniciando por conta própria nesse mundo da programação, porém me deparei com um exercício de algoritmo que a meu ver minha lógica está correta.

Bom, o exercício é o seguinte:  Entrar com o dia e o mês de uma data e informar quantos dias se passaram desde o início do ano. Esqueça a questão dos anos bissextos e considere sempre que um mês possui 30 dias.  

Minha lógica;

algoritmo "semnome"
var
       Mes,TotDias: inteiro
inicio
        Escreval("Informe o mês atual(em numeros):")
        leia(Mes)
        TotDias <- (Mes * 30)
        Escreval("Passaram-se o total de ",TotDias," dias desde o inicio do ano.")
fimalgoritmo

Ao meu ver minha Lógica está correta, porém não entendi o porque de informar alem do mes o dia......? O dia já não estaria incluido no total de dias corridos até o mes atual?

Se alguém puder ajudar agradeço.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Bom dia.

Considere que você não informe o dia. Você só terá resultados com múltiplos de 30. Informando o mês você pode multiplicar x30 os meses anteriores e somar com os dias corridos do mês atual.

adicionado 1 minuto depois

Pelo seu algoritmo, se você estivesse no mês 1, sua resposta é que já se passaram 30 dias desde o início do ano. E se você estivesse no dia 10? 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

52 minutos atrás, Math.Pi disse:

Bom dia.

Considere que você não informe o dia. Você só terá resultados com múltiplos de 30. Informando o mês você pode multiplicar x30 os meses anteriores e somar com os dias corridos do mês atual.

adicionado 1 minuto depois

Pelo seu algoritmo, se você estivesse no mês 1, sua resposta é que já se passaram 30 dias desde o início do ano. E se você estivesse no dia 10? 

Então eu poderia cria uma outra linha no meu algoritmo com onde eu poderia subtrair esse valor dos mes atual?

Link para o comentário
Compartilhar em outros sites

12 minutos atrás, Math.Pi disse:

Primeiro você precisa calcular o mês, que seria mês atual -1, multiplicar a quantidade de meses por 30, depois somar com dia atual.

OK! Então eu nao poderia considerar o mes atual como cheio se caso ele realmente não estivesse. exemplo eu teria que informar mes 7 mult por 30 e somar com numero de dias até o momento.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
3 minutos atrás, Sávio Alexandre de Souza disse:

OK! Então eu nao poderia considerar o mes atual como cheio se caso ele realmente não estivesse. exemplo eu teria que informar mes 7 mult por 30 e somar com numero de dias até o momento.

Se você estiver no mês 8, é isso mesmo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

40 minutos atrás, Math.Pi disse:

Primeiro você precisa calcular o mês, que seria mês atual -1, multiplicar a quantidade de meses por 30, depois somar com dia atual.

Acho que ficaria assim então:

Algoritmo "semnome"
var
       Mes,Dia,TotDias: inteiro
inicio
        Escreval("Informe o mês atual(em numeros):")
        leia(Mes)
        Escreval("Informe o dia atual:")
        Leia(Dia)
        calcMes <- (Mes - 1) * 30
        TotDias <- calcMes + Dia  
        Escreval("Passaram-se o total de ",TotDias," Dias desde o inicio do ano.")
fimalgoritmo

 

adicionado 26 minutos depois
26 minutos atrás, Sávio Alexandre de Souza disse:

Acho que ficaria assim então:


Algoritmo "semnome"
var
       Mes,Dia,TotDias: inteiro
inicio
        Escreval("Informe o mês atual(em numeros):")
        leia(Mes)
        Escreval("Informe o dia atual:")
        Leia(Dia)
        calcMes <- (Mes - 1) * 30
        TotDias <- calcMes + Dia  
        Escreval("Passaram-se o total de ",TotDias," Dias desde o inicio do ano.")
fimalgoritmo

 

Obrigado pela Ajuda!

  • Curtir 1
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá a todos.

 

Apenas dei uma revisada e pequenos ajustes, vejam:

algoritmo "FCdH"
//Entrar com o dia e o mês de uma data e informar quantos dias
//se passaram desde o início do ano. Esqueça a questão dos anos
//bissextos e considere sempre que um mês possui 30 dias.

var
   dia, mes :inteiro
   totalDias:inteiro
inicio
escreva ("Dia atual: ") //acho mais coerente ler o dia primeiro
leia(dia)
escreva ("Mês atual: ")
leia(mes)

totalDias <- dia + (mes-1)*30

//escreval("Passaram-se o total de ",totalDias," Dias desde o inicio do ano.")
escreval("Passaram-se o total de",totalDias," dias desde o inicio do ano.")
fimAlgoritmo

 

Alguns pontos (obs.: claro que como opinião, não são regras absolutas):

- Não é necessário ficar pedindo que "informe...", ou "digite..." etc. Isso é implícito (ou deveria ser). 

- No Brasil usamos a ordem: dia, mês e ano. Logo, ficaria mais interessante ler o dia antes.

- Coloquei para calcular os dias referente ao mês de uma vez só, mas talvez calcular separado não tenha programas também..

adicionado 57 minutos depois

Adendo:

Agora poderia implementar "melhorias", como:

- só aceitar dias entre 1 e 31, e meses de 1 a 12;

- calcular os dias dos meses de acordo com o calendário real;

etc

 

 

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!