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

Calcular idade futura -- Pascal ou C++

Discussão em 'Programação' iniciada por Mujons, 30 de Junho de 2008. (Respostas: 3; Visualizações: 5154)

  1. Mujons

    Mujons Power Member

    Boas pessoal

    Entao é assim, tenho que desenvolver um programa em Pascal (se fizerem em C, eu depois "traduzo") que dada uma data de nascimento e uma data futura (dados guardados em variaveis inteiras), me diga a minha idade do tipo: "Em 22-03-2009, terás 23 Anos, 1 mês e 3 dias", visto eu ter nascido em 19-02-1986!

    Eu tenho isto:

    Código:
    #include <stdio.h>
    
    int bissexto(int ano)
        if (ano%400)==0
             return 1;
        else 
    		if (ano%100)==0
    			return 0;
    		else 
    			if (ano%4)==0
    				return 1;
    			else return 0;
    			
    void test(int dia_I, int mes_I, int ano_I, int dia_F, int mes_F, int ano_F)
    {
        meses_dias= [31,28,31,30,31,30,31,31,30,31,30,31];
        i=ano_I;
        while (i!=ano_F):
            if (bissexto(i)==1)
    		{
                meses_dias[1]=29;
                dias = dias + sum(meses_dias);
            }
    		else
    		{
                meses_dias[1]=28;
                dias = dias + sum(meses_dias);
            }
    		i++;
        anos=dias/365;
        dias_rest=dias-(anos*365);
        if (bissexto(ano_F)==1): //1 = TRUE
            meses_dias[1]=29;
            for (i=0;i++;i<=(sizeof(meses_dias))
    		{
                dias_rest=dias_rest-meses_dias[i];
                if ((dias_rest>meses[i]) || (a>0))
                    meses++;
                else
                    return (anos,meses,dias_rest);
            }
    		return (anos,meses,dias_rest);
    }
    
    Mas isto já deve ter python pelo meio.. mas não liguem! :P

    o programa nao tá a funkar, dá-me erro! Alguém sabe o que possa ser? Alguem tem 1 algoritmo que funcione?

    Desde já obrigado e 1 abraço!
     
    Última edição: 30 de Junho de 2008
  2. theforbidden1

    theforbidden1 Banido

    O que tens que fazer é isto:

    Código:
    typedef struct
    {
    int ano;
    int mes; 
    int dia;
    } dataa;
    char verificarSeDatasIguais  char (dataa * nascimento, dataa * futuro)
    {
             if (nascimento->ano == futuro->ano && nascimento->mes == futuro->mes  && nascimento->dia == futuro->dia)
                    return 1;
             return 0;
    }
    char veridicarAno(dataa * nascimento, dataa * futuro)
    {
             if (nascimento->ano <= futuro->ano)
                    return 1;
             return 0;
    }
    char veridicarMes(dataa * nascimento, dataa * futuro)
    {
    
             if (nascimneto->mes <= futuro->mes)
                    return 1;
            return 0;
    }
    char veridicarDia(dataa * nascimento, dataa * futuro)
     {
             if (nascimento->dia <= nascimento->dia )
                    return 1;
             return 0;
             
    }
    int calculaIdade( dataa * nascimento, dataa * futuro, dataa * diferenca)
    {    
            if (veridicarAno(nascimento, futuro))
            {
                  dieferenca->ano = futuro->ano - nascimento->ano;
                  if (veridicarMes (nascimento, futuro))
                  {
                        diferenca->mes = futuro->mes - nascimento->mes;
                         if (veridicarDia (nascimento, futuro))
                              diferenca->dia = futuro->dia - nascimento->dia; 
                  }
                  return 1;
             } 
             return 0;    
                        
    
    }
    
    void imprimirData (dataa * dt)
    {
              printf(" Anos %d, meses %d, dias %d \n", dt->ano, dt->mes, dt->dia);
    }
    
    int inicializarIdade (dataa * dt, int ano, int mes, int dia)
    {
                dt->ano=ano;
                dt->mes=mes;
                dt->dia=dia;
                return 1;
    }
    
    int main (void)
    {
    
          dataa nasc, fut, diff;
    /****************
          nasc.ano=1983;
          nasc.mes=12;
          nasc.dia=1;
          fut.ano=2013;
          fut.mes=4;
          fut.dia=4;
    *******************/
          inicializarIdade (&fut, 2013, 4, 4);
          inicializarIdade (&nasc, 1983, 12, 1);
    
          if  (calculaIdade( & nasc, &fut, & diff) )
               imprimirData (&diff)
          else
               printf("Data fuura nesnor que a data de nasciemnto \n");
         return 0;
    }
    

    A isto é que eu chamo uma bela de uma programação orienta aos objectos em C puro :)
     
    Última edição: 30 de Junho de 2008
  3. Mujons

    Mujons Power Member

    Tnkz man! :) agora nao posso, mas amanha testo e deixo feedback! ;)
     
  4. pedrorafa

    pedrorafa Power Member

    Eu sei mexer mais ou menos com pas cal queres que eu tente escrever o programa em pascal?
     

Partilhar esta Página