Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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
  • Autor do tópico
  • 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.

    Editado por Simon Viegas
    • Curtir 2

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • 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á!

    Editado por Simon Viegas
    • 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






    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

    ×