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

joao.palma

[RESOLVIDO] Contar os dias uteis entre 2 datas C++

16 mensagens neste tópico

Boa Tarde... :)

O meu problema é o seguinte:

Um funcionario só pode faltar X dias.

Esse funcionario pode tirar os dias todos de ferias ou ir tirando...

O que eu não sei é como vou contar os dias úteis  entre as 2 datas... :(

Estou a utilizar o Borland Developer Studio linguagem C++ :)

alguém me pode ajudar???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Contas os dias todos, e depois, a partir do 1º fim de semana, por cada 7 dias, retiras 2. Isto sem contar com feriados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@TheDark

Contas os dias todos, e depois, a partir do 1º fim de semana, por cada 7 dias, retiras 2. Isto sem contar com feriados.

Podes-me dizer como faço isso em c++?? É que eu sou novo em c++... Ainda não sei muito bem as funções...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se apresentares dúvidas concretas, é mais fácil ajudar-te. Podes mostrar o que já fizeste, ou tentaste fazer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A diferença entre as duas datas? Queres dizer que tens o número de dias entre elas?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

// diferença entre as duas datas
int dif;
// numero de semanas
int nsem;
// numero a subtrair
int nsub
// numero dias uteis
int duteis;

//calcula numero de semanas
nsem = dif/7;

// calcula numero de dias a subtrair
nsub = nsem * 2;

// calcula numero de dias uteis
duteis = dif - nsub

como és novo em c++ não usei funções, fiz o código mas simples que consegui  :P

mas não está totalmente correcto, pois este código está simples de mais, pois apenas funciona com o numero de dias 7,14,21, etc, se quiseres que te ajude a desenvolver é só pedir

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@Aqua Costa

Obrigado...

tambem ja tava a pensar em fazer um ciclo e verificar se era dia de semana ou fim de semana ou feriado...

Tipo:

Para data1 ate data2 fazer

if (dayofweek(strtodate(edit1.text)))=1 then

{

    dif=dif-1

    else

      if (dayofweek(strtodate(edit1.text)))=7 then

          dif=dif-1

}

e depois criar uma tabela para feriados e verificar os feriados.... o que achais deste codigo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se funciona mesmo com a syntax correcta.

Vou-te explicar uma coisa sobre o c++, só usas "=" se estiveres a atribuir valores, se queres comparar usas "=="

depois, (desmintam-me se tiver enganado) no c++ não usas then, e se apenas queres retirar uma unidade ao dif, podes fazer só dif--; ou --dif;

ainda que o código funciona-se, com tantos erros não executava, o código corrigido é

if (dayofweek(strtodate(edit1.text))==1)
    dif--;
else
    if (dayofweek(strtodate(edit1.text))==7)
        dif--;

Ainda assim acho que deverias ponderar usar apenas contas para o teu caso, se tens o  numero de dias retiras apenas fins de semana e feriados. Penso ser mais simples para uma futura compreensão.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Calculo que a função tenha sido criada por ele.

@joao.palma

Aquilo não é um ciclo, é uma condição, como condição ta bom.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se não estou em erro esta o que esta função faz é:

Da o numero da semana a partir de uma data. Retorna de 1 a 7, sendo que 1 é domingo e 7 é sábado...

Ex.  26/02/2009 retorna 5! ou seja quinta-feira...

http://publib.boulder.ibm.com/infocenter/iadthelp/v7r0/index.jsp?topic=/com.businessobjects.integration.eclipse.designer.doc/designer/Functions169.html

http://msdn.microsoft.com/en-us/library/system.dayofweek.aspx

http://docserver.userland.com/date/dayOfWeek

http://www.devmedia.com.br/articles/viewcomp.asp?comp=869

Nota: Também não sei bem como é pk foi um colega meu k me disse... Mas depois de uma pesquisa acho que ele tem razão...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Nenhum dos links que indicaste tem relação com C++. O que mais se aproxima é o da MSDN, que no entanto se refere a um enumerado de .NET e não é uma função.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas... desde já o meu muito obrigado a todos...

Já consegui fazer a parte dos fim de semanas agora só falta mesmo os feriados...

O código abaixo é copy & past do programa....

//Significados...
//Table1 = tabela
//DtAux = Variavel(uma terceira variavel que vai armazenar a data corrente....)
for (DtAux = Table1DtIni->AsDateTime ; DtAux <= Table1DtFin->AsDateTime; DtAux++) {
		if (DtAux.DayOfWeek() == 1){
			Table1DtDif->AsFloat=Table1DtDif->AsFloat-1;
			ttdflt=ttdflt-1;}
		else {
			if (DtAux.DayOfWeek()== 7){
				Table1DtDif->AsFloat=Table1DtDif->AsFloat-1;
				ttdflt=ttdflt-1;}}
	}

Agora só falta mesmo os feriados mas acho que isso é só mais uma tabela um for e um if e ta feito acho eu...

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