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

joao.palma

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

Recommended Posts

joao.palma

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???

Share this post


Link to post
Share on other 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.


Desaparecido.

Share this post


Link to post
Share on other sites
joao.palma

@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...

Share this post


Link to post
Share on other sites
TheDark

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


Desaparecido.

Share this post


Link to post
Share on other sites
TheDark

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


Desaparecido.

Share this post


Link to post
Share on other sites
Aqua Costa

// 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

Share this post


Link to post
Share on other sites
joao.palma

@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?

Share this post


Link to post
Share on other sites
Cybernavigator

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.


Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Share this post


Link to post
Share on other sites
Cybernavigator

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.


Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Share this post


Link to post
Share on other sites
joao.palma

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...

Share this post


Link to post
Share on other sites
TheDark

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.


Desaparecido.

Share this post


Link to post
Share on other sites
joao.palma

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...

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

×

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.