dasdfaqwerdf

Page 52

Modificadores de datas, avançando Avança-se um dia com a função Forth:

Avança-se x dias com a função Add:

void voidDate::Forth() Date::Forth() {{ ifif(day (day<<MonthSize()) MonthSize()) day++; day++; else else A função MonthSize {{ diz quantos dias tem o day day==1; 1; mês. Qual mês? O mês ifif(month (month<<12) 12) a que pertence o month++; month++; objecto. else else {{ month month==1; 1; year++; year++; }} }} Se não estivermos no fim do mês, }} incrementamos o dia. Se não, o dia é 1 e se o mês não for Dezembro, incrementamos o mês. Se não, o mês é Janeiro e incrementamos o ano.

void voidDate::Add(int Date::Add(intx) x) {{ for for(int (inti i==0; 0;i i<<x; x;i++) i++) Forth(); Forth(); }} Isto não é lá muito eficiente, se x for grande /. Por outro lado, se x for negativo, nada acontece.

2003-07-19

Avança-se x semanas somando 7*x dias: void voidDate::AddWeek(int Date::AddWeek(intx) x) {{ Add(7 Add(7**x); x); }}

Curso de Programação com C++ © Pedro Guerreiro 2003

103

Modificadores de datas, recuando São os três muito parecidos com os três para avançar. Recua-se um dia com a Recua-se x dias com a função Back: função Subtract: void voidDate::Back() Date::Back() {{ ifif(day (day>>1) 1) day--; day--; else else {{ ifif(month (month>>1) 1) month--; month--; else else {{ month month==12; 12; year--; year--; }} day day==MonthSize(); MonthSize(); }} }} 2003-07-19

void voidDate::Subtract(int Date::Subtract(intx) x) {{ for for(int (inti i==0; 0;i i<<x; x;i++) i++) Back(); Back(); }}

Recua-se x semanas subtraindo 7*x dias: void voidDate::SubtractWeek(int Date::SubtractWeek(intx) x) {{ Subtract(7 Subtract(7**x); x); }}

Curso de Programação com C++ © Pedro Guerreiro 2003

104


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.