Eduardo Betiollo Postado Junho 27, 2012 Denunciar Share Postado Junho 27, 2012 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Junho 28, 2012 Denunciar Share Postado Junho 28, 2012 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 posteida 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; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eduardo Betiollo Postado Junho 28, 2012 Autor Denunciar Share Postado Junho 28, 2012 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 posteida 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Junho 28, 2012 Denunciar Share Postado Junho 28, 2012 Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Eduardo Betiollo Postado Junho 29, 2012 Autor Denunciar Share Postado Junho 29, 2012 Abraços1) 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çosCARA, pesquisei mais afundo aqui sobre o conio2, e usei somente conio.h, e deu certo, valeu! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Junho 29, 2012 Denunciar Share Postado Junho 29, 2012 Blzz.. Tinha saído e cheguei agora,você pode usar no lugar do getche(); o comando system("pause");da o mesmo efeito, a diferença é que o getche(); espera você clicar qualquer tecla sem mostrar mensagem.Falou? Abraços.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Eduardo Betiollo
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
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.