1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

programa em c, horas e dias do mes

Discussão em 'Programação' iniciada por purple_comma, 23 de Janeiro de 2009. (Respostas: 1; Visualizações: 2981)

  1. BOAS!

    estou a fazer um trabalho, mas preciso da vossa ajuda... tenho um programa que faz a diferença entre duas datas, mas agora tenho que fazer a diferença entre as duas datas mas com as horas, e a diferença entre as horas...podiam-me ajudar

    este é o meu programa da diferença entre datas:

    Código:
    #include <stdio.h>/* No início do programa, declara-se as 
    
    bibliotecas usadas */ 
    
    main () {/* Declaração da função principal. Sempre 
    
    necessária */
    
    int dia1,dia2,mes1,mes2,ano1,ano2; /* Variáveis locais a 
    
    esta função */
    
     /*pede o valor das variaveis dias ,meses e anos */
    
     
    printf("Qual o dia da primeira data? ");
    
    scanf ("%d", &dia1); 
    
    
    printf("Qual o mes da primeira data? ");
    
    scanf ("%d%*c", &mes1);
    
    
    printf("Qual o ano da primeira data? ");
    
    scanf ("%d%*c", &ano1);
    
    
    printf("Qual o dia da segunda data? ");
    
    scanf ("%d%*c", &dia2); 
    
    
    printf("Qual o mes da segunda data? ");
    
    scanf ("%d%*c", &mes2); 
    
    
    printf("Qual o ano da segunda data? ");
    
    scanf ("%d%*c", &ano2); 
    
    
    printf("%d", difdata(dia1,dia2,mes1,mes2,ano1,ano2));     
    
    }
    
    /* Declaração de funções*/
    
    int bissexto (int ano)
     {
        
            if((ano%4==0 && ano%100!=0) || ano%400==0)
                
                return 1;
            else 
                return 0;
        } 
    
    
    int diasmes (int mes, int ano){       
          int dias;  
            
        switch(mes){
            
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
            
                dias= 31;
               
                break;
            
            case 4:
            case 6:
            case 9:
            case 11:
                
                dias= 30;
                
                break;
            
            case 2:
                
                if(bissexto(ano)==1)
                    
                    dias= 29;
                else
                    dias= 28;
    
    break;            
            default : dias= 0;
                   
            break ;
        
        }
    
        return dias; 
        
    }
    
    int diasfimmes (int dia, int mes, int ano)
        {
            return diasmes(mes, ano) - dia; 
        }
    
    
    
    int mesesintermedios(int mes1, int mes2, int ano)
               {
               
               int i; 
               int soma=0;
               
                   
               for (i=mes1+1 ; i<=mes2-1 ; i++) {
                   
                   soma = soma + diasmes(i,ano);
               }
               
               return soma; 
               
               }
    
    int diasano (int ano)
    
    {
    
    if (bissexto(ano))
    
    return 366;
    
    else
    
    return 365; 
    
    }
    
    int anosintermedios (int ano1,int ano2)
    
    {
    
    int i; int soma=0;
    
    for (i = ano1+1; i <= ano2 - 1; i++) {
    
    soma = soma + diasano(i);
    
    }
    
    return soma; 
    
    }
    
    int difdata (int dia1,int dia2,int mes1,int mes2,int 
    
    ano1,int ano2)
    
    {
    
    if (ano1==ano2 && mes1==mes2)
    
    return dia2-dia1; 
    
    else
    
    if (ano1==ano2)
    
    return diasfimmes(dia1,mes1,ano1) + mesesintermedios 
    
    (mes1,mes2,ano1)+dia2; 
    
    else
    
    return diasfimmes (dia1,mes1,ano1) + mesesintermedios 
    
    (mes1,13,ano1) + anosintermedios(ano1,ano2) + 
    
    mesesintermedios(0,mes2,ano2) + dia2; 
    
    }
    
    :sad::005:
     
  2. Ronnie_03

    Ronnie_03 Power Member

    Confesso que não olhei para o teu codigo, mas se só te falta fazer a diferença entre as horas, é fácil...convertes as duas horas para minutos (ou horas), fazes a diferença e depois convertes o resultado para o formato normal de hora.
     

Partilhar esta Página