Ir para conteúdo
Fórum Script Brasil
  • 0

Algoritmo para calcular DATAS


Eduardo Betiollo

Pergunta

Boa noite, meu algoritmo não está compilando, está dando erro:

#include <stdio.h>

typedef struct {

int dia;

int mes;

int ano;

} data;

int bissexto (int ano);

unsigned long dist_dias (data inicio, data fim);

int dias_mes[2][13] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},

{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};

int main(void) {

data dia1, dia2;

printf("Digite uma data:\n");

printf("Dia: \n");

scanf("%d", &dia1.dia);

printf("Mes: \n");

scanf("%d",&dia1.mes);

printf("Ano: \n");

scanf("%d", &dia1.ano);

printf("Digite outra data:\n");

printf("Dia: \n");

scanf("%d", &dia2.dia);

printf("Mes: \n");

scanf("%d",&dia2.mes);

printf("Ano: \n");

scanf("%d", &dia2.ano);

printf("a distancia em dias: %lu\n", dist_dias (dia1, dia2));

return 0;

}

int bissexto (int ano) {

return (ano % 4 == 0) && ((ano % 100 != 0) || (ano % 400 == 0));

}

unsigned long dist_dias (data inicio, data fim) {

unsigned long idias, fdias;

unsigned long def_anos = 0;

register int i;

int dbissexto;

unsigned long dist_dias (data inicio, data fim) { NESTA LINHA OCORRE O ERRO

idias = inicio.dia;

dbissexto = bissexto (inicio.ano);

for (i = inicio.mes - 1; i > 0; --i)

idias += dias_mes[dbissexto];

fdias = fim.dia;

dbissexto = bissexto (fim.ano);

for (i = fim.mes - 1; i > 0; --i)

fdias += dias_mes[dbissexto];

while (inicio.ano < fim.ano)

def_anos += 365 + bissexto(inicio.ano++);

return def_anos - idias + fdias;

}

Alguém poderia me ajudar, obrigado!

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Ola dei uma arrumada no seu código e ta funcionando por aqui. Se tiver tudo certo de um sinal e se tiver faltando algo poste de novo.

Vários erros mais não vou comentar compare os códigos e se poder dê uma olhada nos códigos que eu postei

da página 01 até a página 08, Eu gosto de pessoas como você que pega pra fazer até onde consegue,

já outros querem que agente façam o código para eles. Falou? segue o código consertado abaixo:

#include <stdio.h>
#include <conio2.h>

typedef struct {
int dia;
int mes;
int ano;
} data;



int dias_mes[2][13] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};

int main(void) {

int bissexto (int ano);
unsigned long dist_dias (data inicio, data fim);

data dia1, dia2;
printf("Digite uma data:\n");
printf("Dia: \n");
scanf("%d", &dia1.dia);
printf("Mes: \n"); 
scanf("%d",&dia1.mes);
printf("Ano: \n");
scanf("%d", &dia1.ano); 
printf("Digite outra data:\n");
printf("Dia: \n");
scanf("%d", &dia2.dia);
printf("Mes: \n"); 
scanf("%d",&dia2.mes);
printf("Ano: \n");
scanf("%d", &dia2.ano); 

printf("a distancia em dias: %lu\n", dist_dias (dia1, dia2));
getche();

}

int bissexto (int ano) {
return (ano % 4 == 0) && ((ano % 100 != 0) || (ano % 400 == 0));
}

unsigned long dist_dias (data inicio, data fim) {
unsigned long idias, fdias;
unsigned long def_anos = 0;
register int i;
int dbissexto;



// NESTA LINHA OCORRE O ERRO
idias = inicio.dia;
dbissexto = bissexto (inicio.ano);
for (i = inicio.mes - 1; i > 0; --i)
idias += dias_mes[dbissexto][i];
fdias = fim.dia;
dbissexto = bissexto (fim.ano);
for (i = fim.mes - 1; i > 0; --i)
fdias += dias_mes[dbissexto][i];    
while (inicio.ano < fim.ano)
def_anos += 365 + bissexto(inicio.ano++);
return def_anos - idias + fdias;
}

Link para o comentário
Compartilhar em outros sites

  • 0
Ola dei uma arrumada no seu código e ta funcionando por aqui. Se tiver tudo certo de um sinal e se tiver faltando algo poste de novo.

Vários erros mais não vou comentar compare os códigos e se poder dê uma olhada nos códigos que eu postei

da página 01 até a página 08, Eu gosto de pessoas como você que pega pra fazer até onde consegue,

já outros querem que agente façam o código para eles. Falou? segue o código consertado abaixo:

#include <stdio.h>
#include <conio2.h>

typedef struct {
int dia;
int mes;
int ano;
} data;



int dias_mes[2][13] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}};

int main(void) {

int bissexto (int ano);
unsigned long dist_dias (data inicio, data fim);

data dia1, dia2;
printf("Digite uma data:\n");
printf("Dia: \n");
scanf("%d", &dia1.dia);
printf("Mes: \n"); 
scanf("%d",&dia1.mes);
printf("Ano: \n");
scanf("%d", &dia1.ano); 
printf("Digite outra data:\n");
printf("Dia: \n");
scanf("%d", &dia2.dia);
printf("Mes: \n"); 
scanf("%d",&dia2.mes);
printf("Ano: \n");
scanf("%d", &dia2.ano); 

printf("a distancia em dias: %lu\n", dist_dias (dia1, dia2));
getche();

}

int bissexto (int ano) {
return (ano % 4 == 0) && ((ano % 100 != 0) || (ano % 400 == 0));
}

unsigned long dist_dias (data inicio, data fim) {
unsigned long idias, fdias;
unsigned long def_anos = 0;
register int i;
int dbissexto;



// NESTA LINHA OCORRE O ERRO
idias = inicio.dia;
dbissexto = bissexto (inicio.ano);
for (i = inicio.mes - 1; i > 0; --i)
idias += dias_mes[dbissexto][i];
fdias = fim.dia;
dbissexto = bissexto (fim.ano);
for (i = fim.mes - 1; i > 0; --i)
fdias += dias_mes[dbissexto][i];    
while (inicio.ano < fim.ano)
def_anos += 365 + bissexto(inicio.ano++);
return def_anos - idias + fdias;
}

Boa noite 'roccoC/C++', estou trabalhando no momento, muito obrigado pela ajuda, não tenho como ver o código agora, mas assim que chegar em casa vou conferir onde foram os erros e te responder se está tudo ok, obrigado pela força.. abraço.

Link para o comentário
Compartilhar em outros sites

  • 0
Abraços

1) Está dando erro nesta biblioteca #include <conio2.h>, qual seria a função dela? Fiz uma pesquisa aqui, e vi várias pessoas falando sobre ela... "tem alguns métodos para posicionar o cursor onde você quiser" é necessária?

2) A função getche() está dando erro também, não seria só getch() ? Quando compilo o programa ele informa o resultado e fecha, não pausa, ai teria que usar dois getche ou um system pause?

Se puder me ajudar nessas duas dúvidas, agradeço muito. valeu.

Abraços

CARA, pesquisei mais afundo aqui sobre o conio2, e usei somente conio.h, e deu certo, valeu!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...