Jump to content
Sign in to follow this  
Tedim

PSEUDO CÓDIGO

Recommended Posts

Tedim

Boas, sou novo aqui, descobri este fórum há coisa de minutos atrás e foi a melhor descoberta do google que fiz até agora ._.

Preciso de umas ajudas no Pseudo Código. Apenas nalguns exercícios que foram mandados para fazer.

Exercício:

Considere uma data correspondente ao mês e dia do ano corrente fornecida pelo utilizador. Escreva

um algoritmo que apresente a quantidade de dias que falta para o último dia do ano.

Minha resolução:

ED: dia, mes, ano, diasrestantes INTEIRO

INICIO

Ler (dia)

Ler (mes)

Ler (ano)

Repetir

Ler(dia, mes)

Enquanto (mes=1 ou m=3 ou m=5 ou m=7 ou m=8 ou m=10 ou m=12 e dia>31 ou dia<=0)

Repetir

Ler(dia, mes)

Enquanto (mes=4 ou m=6 ou m=9 ou m=11 e dia>30 ou dia<=0)

Se (ano/4=0) Entao

Repetir

Ler(dia, mes)

Enquanto (mes=2 e dia>29 ou dia <=0)

Se (mes=1)

diasrestantes <- (31 - dia) + 333

FimSe

Se (mes=2)

diasrestantes <- (29 - dia) + 304

FimSe

Se (mes=3)

diasrestantes <- (31 - dia) + 273

FimSe

Se (mes=4)

diasrestantes <- (30 - dia) + 243

FimSe

Se (mes=5)

diasrestantes <- (31 - dia) + 212

FimSe

Se (mes=6)

diasrestantes <- (30 - dia) + 182

FimSe

Se (mes=7)

diasrestantes <- (31 - dia) + 151

FimSe

Se (mes=8)

diasrestantes <- (31 - dia) + 120

FimSe

Se (mes=9)

diasrestantes <- (30 - dia) + 91

FimSe

Se (mes=10)

diasrestantes <- (31 - dia) + 60

FimSe

Se (mes=11)

diasrestantes <- (30 - dia) + 31

FimSe

Se (mes=12)

diasrestantes <- (31 - dia)

FimSe

Senao

Repetir

Ler(dia, mes)

Enquanto (mes=2 e dia>28 ou dia <=0)

Se (mes=1)

diasrestantes <- (31 - dia) + 332

FimSe

Se (mes=2)

diasrestantes <- (28 - dia) + 304

FimSe

Se (mes=3)

diasrestantes <- (31 - dia) + 273

FimSe

Se (mes=4)

diasrestantes <- (30 - dia) + 243

FimSe

Se (mes=5)

diasrestantes <- (31 - dia) + 212

FimSe

Se (mes=6)

diasrestantes <- (30 - dia) + 182

FimSe

Se (mes=7)

diasrestantes <- (31 - dia) + 151

FimSe

Se (mes=8)

diasrestantes <- (31 - dia) + 120

FimSe

Se (mes=9)

diasrestantes <- (30 - dia) + 91

FimSe

Se (mes=10)

diasrestantes <- (31 - dia) + 60

FimSe

Se (mes=11)

diasrestantes <- (30 - dia) + 31

FimSe

Se (mes=12)

diasrestantes <- (31 - dia)

FimSe

FimSe

Escrever ("Faltam ",diarestantes,"dias. Da próxima faz de cabeça.")

FIM

SIIIIIIIIIIIIIIIIIIIIIGH! Está enorme! Tenho a certeza que há maneira de fazer isto mais simples, só não sei é como, a dúvida está ai  :wallbash:

Se alguém me ajudar, agradeço

Share this post


Link to post
Share on other sites
Warrior

Antes de mais nada, a minha opinião sobre pseudo-código é que é sempre aquela coisa chata mal definida que complica mais do que ajuda.

Indo ao que interessa: a maneira mais simples de resolver o problema seria começar por criar 1  vector com os dias de cada mês.

Algo como: (e aqui a notação difere sempre..)

Vector v = (31, 28, 31, 30, 31, .............)

De seguida, descobrir quantos dias faltam para o final do mês actual. (assumindo que o vector é 1-based)

diasAteFim = v(mes) - dia ;

E somas todos os dias até ao fim do ano

Para i = mes+1  ate 12 :

  diasAteFim = diasAteFim + v(i) ;

Por fim, verificas se o ano é bissexto ou não, e se for, e se a data for antes de 28 de fevereiro, incrementas 1.

Algo como:

se (bissexto E mes < 3 E dia < 28)

  diasAteFim = diasAteFim + 1 ;

Deixei a condição do ano bissexto por fazer porque a tua está errada e assim googlas mais um pouco.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.