• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Tedim

PSEUDO CÓDIGO

2 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora