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

Ajuda C++

Discussão em 'Programação' iniciada por deepshoot, 2 de Junho de 2009. (Respostas: 15; Visualizações: 1174)

  1. deepshoot

    deepshoot Power Member

    Olá.
    Ando farto de procurar pela net fora algo que me ajude a perceber como obter a data pelo próprio sistema e guarda-la numa estrutura através da biblioteca time.h

    Tenho a estrutura tm

    Código:
    /*struct tm{
        int tm_sec; // Segundos, 0-59
        int tm_min; // Minutos, 0-59
        int tm_hour; //Horas 0-23 
        int tm_mday; //dia do mês, 1-31 
        int tm_mon; // mês a partir de janeiro, 0-11 
        int tm_year; // anos a partir de 1900 
        int tm_wday; // dias a partir de domingo, 0-6 
        int tm_yday; // dias a partir de 1 de janeiro 1-365 
        int tm_isdst; // Indicador de horário de verão 
     };*/
    
    /*
    struct tm data_agora(){
        struct tm d;
        struct tm *local;
        struct time_tt;
            
        d.tm_mday = local -> tm_mday;
        d.tm_mon = local -> tm_mon + 1;
        d.tm_year = local -> tm_year + 1900;
    
        return d;
            
    };
    */
    Alguém dá uma ajuda sff?


    Abraço
     
  2. blueomega

    blueomega Power Member

    no primeiro link do google pra time.h

    Código:
    /* ctime example */
    #include <stdio.h>
    #include <time.h>
    
    int main ()
    {
      time_t rawtime;
    
      time ( &rawtime );
      printf ( "The current local time is: %s", ctime (&rawtime) );
      
      return 0;
    }
    primeiro obtens o tempo que passou desde 1970 e depois convertes pra algo legível
     
  3. deepshoot

    deepshoot Power Member

    já tinha visto isso, mas precisava de umas luzes mais fortes para meter isto a funcionar :)

    Usando esta funçao retirada desse site

    Código:
    #include <stdio.h>
    #include <time.h>
    
    int main ()
    {
      time_t seconds;
    
      seconds = time (NULL);
      printf ("%ld hours since January 1, 1970", seconds/3600);
      
      return 0;
    }
    Obtenho o erro no visual c++
    error C3861: 'time': identifier not found
     
  4. blackburn69

    blackburn69 Power Member

    Código:
      time_t rawtime;
      struct tm *timeinfo;
    
      time (&rawtime);
      timeinfo = localtime(&rawtime);
    
    Usando isso, tens tudo guardado na estrutura como queres. Para acederes é só fazeres timeinfo->tm_year por exemplo.
    Se usares uma das funções da time.h não precisas de mudar nada nesses campos. Se quiseres usar uma coisa mais sofisticada como por exemplo o strftime, então já precisas de mudar. Somar 1900 ao ano e 1 ao mês, por exemplo.

    Quanto ao teu erro, eu também experimentei no Visual C++ e não houve qualquer problema. Vê como estás a fazer o projecto no VC++. Deves ter feito qualquer coisa mal. Vê se descobres o que foi.

    Cumprimentos.
     
  5. deepshoot

    deepshoot Power Member

    Mesmo com o teu exemplo continua a dar-me os mesmos erros:
    error C3861: 'time': identifier not found
    error C3861: 'localtime': identifier not found

    Alguém sabe o que se poderá estar a passar?!

    PS: Criei um projecto totalmente novo para experimentar, e dá esses erros :S
     
  6. blueomega

    blueomega Power Member

    deve faltar uma referencia a alguma biblioteca

    visual studio pra aprender não é bom
     
  7. deepshoot

    deepshoot Power Member

    Pois...vou reinstalar para ver se resolve.
     
  8. blueomega

    blueomega Power Member

    não é reinstalar que resolve, é ir as propriedades do projecto adicionar as bibliotecas necessarias

    por isso é que digo que o vs não é pra aprender
     
  9. deepshoot

    deepshoot Power Member


    Como fazer isso?

    Abraço
     
  10. blueomega

    blueomega Power Member

    eu do codigo em cima so precisei de adicionar o cabeçalho para funcionar em vs2008

    #include "time.h"
     
  11. blackburn69

    blackburn69 Power Member

    deepshoot é suposto aquele código que aqui o pessoal forneceu funcionar sem qualquer problema no Visual C++. Outro código mais elaborado poderia não funcionar devido aos seus includes e às respectivas bibliotecas não estarem presentes no sistema. Isto porque o Visual C++ traz apenas o que a Microsoft julga ser o básico para programar.
    Mas tal como o blueomega disse, Visual C++ não é o melhor para quem está a aprender a programar. Linux é um ambiente muito melhor na minha opinião para isso. Tens as libs todas que precisas e mais algumas e tens as man pages que te explicam logo tudo sobre uma determinada função ou lib.
    Mas se quiseres continuar no Visual C++, já agora vê num directório que há-de ser algo deste género C:\Program Files\Microsoft Visual Studio 9.0\VC\include se tens a time.h lá. Deverias ter. :)
     
  12. cheires

    cheires Power Member

    Bem assim de repente, Estruturas em c++?!
    Não seria mais fácil utilizar objectos?!
    É que programar com estruturas em c++, porque não fazer isso logo em c?
    Vais ver que se usares objectos isso fica muito mais fácil, além de que pode ser por causa disso que te está a dar erro.
     
  13. deepshoot

    deepshoot Power Member

    Olá.
    Obrigado pela resposta, no entanto na pasta "include" está lá a time.



    Infelizmente o objectivo do trabalho é usar estruturas em linguagem c++ :(

    Abraço
     
  14. blackburn69

    blackburn69 Power Member

    Então vai a Tools -> Options e vê no sítio da minha imagem se tens o que eu tenho. Pelo menos esta $(VCInstallDir)include deverias ter.

    [​IMG]
     
  15. deepshoot

    deepshoot Power Member

    tenho essas 4 que tu tens...já me estou a passar com a função do time...copio e colo, no meu não dá, mas pelo que outros users dizem, no deles funciona...
    Vou ter de experimentar noutro PC, não me esteja eu a chatear com isto e seja problema do Pc...
    Deixo em anexo o erro que me está a dar agora.
    [​IMG]

    Esse código foi um copy/paste retirado da net.

    Abraço e obrigado
     
    Última edição: 17 de Junho de 2009
  16. blueomega

    blueomega Power Member

    e o compilador esta correcto, não foi inicializada

    em c++, apesar de não ser boa pratica podes ter variaveis não inicializadas, em versões mais antigas de c#, acho que idem.

    acho que com as flags correctas isso compila, em todo caso é mais correcto inicializar a variavel
     

Partilhar esta Página