Ir ao conteúdo
  • Cadastre-se
eversonwottrich

Dificuldade na programacao do portugol (contador de dias, anos e meses)

Recommended Posts

Pessoal, estava fazendo um contador de anos, meses dias. O funcionamento dele é pedir um total de dias e apresentar quantos anos, meses e dias da aquele total, porém meu código funciona bem até a parte de apresentar os dias, não estou conseguindo fazer funcionar corretamente, nessa parte dos dias ta meio incompleto e confuso, por tava tentando até q desisti do jeito q ta.

 

P.S: Uso o Portugol Studio

programa
{
	funcao inicio()
	{
		inteiro dias, anos, meses, resto, total
		escreva("Digite os dias: ")
		leia(total)
		escreva("\n")
		anos = total/365
		resto = total%365
		se(anos > 0){
			escreva(anos ," ano/anos\n")
		}
		meses = resto/30
		resto = meses%30
		se(total >= 30 e resto > 0){
			escreva(meses, " mes/meses\n")
		}
		se(total < 30){
			escreva(total, " dia/dias\n")
		}
		se(resto > 0){
			escreva(resto, " dia/dias\n")
		}
	}
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @aeddwd, o tente seguir o mesmo raciocínio para todas as conversões...

 

Como você passou te "total" para "ano"?

 

De "ano" para "meses" seria a mesmo princípio!

De "meses" para "dia" idem!

 

O mesmo vale para os "se", a condição para "escrever ou não" parte da mesma base!!! (mesmo usado em "ano")

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Simon Viegas, então, tentei fazer pela mesmo lógica do ano e meses, mas há problema quando coloco valor q n da 1 mes, tipo 367 dias, ou menos de 1 mes, resolvi o problema do menos de 1 mes colocando esse comando dps de pedir o total de dias, agora preciso fazer o comando q da os dias com mais de 30 dias totais inseridos, exemplo: 34 dias, 369 dias

se(total < 30){
			escreva(total, " dia/dias\n")
		}
adicionado 42 minutos depois
8 horas atrás, Simon Viegas disse:

Olá @aeddwd, o tente seguir o mesmo raciocínio para todas as conversões...

 

Como você passou te "total" para "ano"?

 

De "ano" para "meses" seria a mesmo princípio!

De "meses" para "dia" idem!

 

O mesmo vale para os "se", a condição para "escrever ou não" parte da mesma base!!! (mesmo usado em "ano")

 

No aguardo.

Atualização:

Amigo, refiz um código do zero, pra ver se eu fazia de outra forma e daria certo, e consegui,a cabei usando 3 variáveis diferentes em vez de 1 só.

programa
{
	funcao inicio()
	{
		inteiro dias, meses, anos, total, restoanos, restomeses, restodias
		escreva("Digite os dias: ")
		leia(total)
		escreva("\n")
		anos = total/365
		restoanos = total%365
		se(anos > 0){
			escreva(anos, " ano/anos\n")
		}
		meses = restoanos/30
		restomeses = restoanos%30
		se(meses > 0){
			escreva(meses, " mes/meses\n")
		}
		se(restoanos > 0 e restoanos < 30){
			escreva(restoanos, " dia/dias\n")
		}
		senao{se(restomeses > 0 e restomeses < 30){
			escreva(restomeses, " dia/dias\n")
		}
		}
	}
}

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @aeddwd.

 

Pelo que vi não precisa de várias variáveis. O processo funciona em cadeia, veja:

 

 

Em 09/08/2016 às 00:09, aeddwd disse:

		anos = total/365
		resto = total%365
		se(anos > 0){

 


Traduzindo ficaria algo assim:

		<VALOR_QUE_PRECISO_AGORA> = <VALOR_ATUALIZADO>/<FATOR>
		resto = <VALOR_ATUALIZADO>%<FATOR>
		se(<VALOR_QUE_PRECISO_AGORA> > 0){

Só entender o conceito e fazer isso para mês e dia.

 

***

 

Tente fazer essa operação de cabeça... funciona mais ou menos assim: "quantos anos cabem nesse valor? tirando os possíveis anos, quantos meses cabem no que sobrou? tirando os meses, quantos dias cabem no que sobrou?"..... e daria para continuar... "tirando os dias, quantas horas cabem no que sobrou? tirando as horas, quantos minutos cabem no que sobrou? tirando os minutos, quantos segundo cabem no que sobrou? tirando os segundos, quantos........" (o processo poderia ser infinito!!!)..

 

 


No aguardo.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Simon Viegas,  no outro código-fonte, eu tentei fazer desse jeito, mas por algum motivo ele n retornava dias ou meses dependendo dos dias inserido, como eu usava apenas uma variável, ela tava sempre sendo reescrita, se eu inseria 369 dias, ele apresentava apenas 1 ano, os 4 dias não era apresentados pois ele iria usar o resto dos meses, q seria 0

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
26 minutos atrás, aeddwd disse:

Olá @Simon Viegas,  no outro código-fonte, eu tentei fazer desse jeito, mas por algum motivo ele n retornava dias ou meses dependendo dos dias inserido, como eu usava apenas uma variável, ela tava sempre sendo reescrita, se eu inseria 369 dias, ele apresentava apenas 1 ano, os 4 dias não era apresentados pois ele iria usar o resto dos meses, q seria 0

Releia minha postagem anterior...

 

Resumidamente: no seu primeiro código, você está calculando errado lá no meses!!

 

Uma estrutura correta seria a que fiz lá!

  • Curtir 2

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

×