Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #58 da revista programar. Faz já o download aqui!

AprendizC

[Resolvido] CSV em C++

Mensagens Recomendadas

AprendizC    1
AprendizC

Como comparar os valores pretendidos (por exemplo datas) de um ficheiro csv com a data atual e mostrar uma mensagem se forem iguais.C++ :thumbsup:

Editado por AprendizC

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AprendizC    1
AprendizC

o programa e pa ser feito em c++ neste caso no dev c++.

o que se passa e o seguinte eu quero criar um programa que va buscar um arquivo csv com as datas de aniversario no c++ e comparar as datas com o dia e mes atual.

Se houver alguma data de nascimento igual mandar uma mensagem ao aniversariante por email por exemplo. :thumbsup:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AprendizC    1
AprendizC

PARA a data tenho o seguinte:

main()
{
   struct tm *DataAtual; //estrutura para armazenar data e hora.
   time_t Segundos;
   time(&Segundos); //obtém a hora em segundos.
   DataAtual = localtime(&Segundos); //converte horas em segundos.
   printf("\nDia........: %d", DataAtual->tm_mday);
   printf("\nMes........: %d", DataAtual->tm_mon+1);
   printf("\n\nPressione uma tecla para finalizar...");
   getch();
}

Para o csv:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
   int loop = 1;
   string value;
   while(loop = 1)
   {
       printf("\t\tLista de Aniversarios! \n");
       ifstream myfile;
       myfile.open ("EXEMPLO.csv");
       while (myfile.good())    
           getline ( myfile, value, ',' );
       cout << string ( value) << endl;
       myfile.close();    
       system("PAUSE");
       return 0;
   }
}

apesar de o do csv ta um pouco confuso

so pa lembra sou um aprendiz e nao tenho grande conhecimento de programaçao

Editado por Rui Carlos
GeSHi

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1139
HappyHippyHippo

antes de mais, qualquer tipo de código que seja apresentado aqui no fórum deverá ser ladeado pelas tags

 e [/code ] (sem os espaços) onde no teu caso, como é em C++ deverás trocar <linguagem> por cpp.

exemplo (novamente, relembro que as tags é sem espaços)

[code=cpp ]

// ...

[/code ]

segundo, era bem saber o conteúdo ou um exemplo dos dados do CSV

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AprendizC    1
AprendizC

ca esta o exemplo do csv:

Data de nascimento;;Endereco de e-mail;;Nome

;;;;

11-Mai;" ";exemplo@hotmail.com;;Exemplo

12-Mai;" ";exemplo@hotmail.com;;Exemplo

13-Mai;" ";exemplo@hotmail.com;;Exemplo

14-Mai;" ";exemplo@hotmail.com;;Exemplo

15-Mai;" ";exemplo@hotmail.com;;Exemplo

16-Mai;" ";exemplo@hotmail.com;;Exemplo

17-Mai;" ";exemplo@hotmail.com;;Exemplo

18-Mai;" ";exemplo@hotmail.com;;Exemplo

19-Mai;" ";exemplo@hotmail.com;;Exemplo

20-Mai;" ";exemplo@hotmail.com;;Exemplo

21-Mai;" ";exemplo@hotmail.com;;Exemplo

22-Mai;" ";exemplo@hotmail.com;;Exemplo

23-Mai;" ";exemplo@hotmail.com;;Exemplo

24-Mai;" ";exemplo@hotmail.com;;Exemplo

25-Mai;" ";exemplo@hotmail.com;;Exemplo

Editado por AprendizC

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Flinger    50
Flinger

:D Não podiam escolher um formato de datas mais ranhoso, pois não???

while (myfile.good())	
  getline ( myfile, value, ',' );

Neste ciclo já vais buscar linha a linha. Agora é só percorrer a string e pegar separadamente nos campos delimitados pelo ;. Depois fazes parse da data numa struct tm.

Editado por Flinger

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
HappyHippyHippo    1139
HappyHippyHippo

Pode dar um exemplo das tags ou como é que se faz?

:thumbsup:

antes de mais, qualquer tipo de código que seja apresentado aqui no fórum deverá ser ladeado pelas tags

 e [/code ] (sem os espaços) onde no teu caso, como é em C++ deverás trocar <linguagem> por cpp.

exemplo (novamente, relembro que as tags é sem espaços)

[code=cpp ]

// ...

[/code ]

segundo, era bem saber o conteúdo ou um exemplo dos dados do CSV

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pikax    159
pikax

eu faria uma especie de split no csv.

EDIT: Agr que tive a ver o ficheiro, e era melhor fazer uma estrutura para cada linha

Editado por pikax

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Flinger    50
Flinger

A própria função getline permite fazer isso, apanhando apenas até um delimitador :http://www.cplusplus.com/reference/string/string/getline/

Senão podes usar o sscanf: http://linux.die.net/man/3/sscanf ou o strtok: http://linux.die.net/man/3/strtok

É possível que exista algo mais elegante em c++, mas como não é propriamente a minha praia, não te posso aconselhar muito.

Conselho: Primeiro começa por ler para outras strings os vários componentes de uma linha. Depois tratas de pensar como extrair a data da string correspondente.

Editado por Flinger

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
AprendizC    1
AprendizC

Com o seguinte CSV como ou qual a função que devo utilizar para guardar os dias e os meses de cada pessoa numa variável para que possa comparar com a data actual.

Dia;Mes; Nome; Email;

11; 03; Exemplo; Exemplo@mail.com;

11; 03; Exemplo; Exemplo@mail.com;

11; 03; Exemplo; Exemplo@mail.com;

11; 03; Exemplo; Exemplo@mail.com;

11; 03; Exemplo; Exemplo@mail.com;

11; 03; Exemplo; Exemplo@mail.com;

11; 03; Exemplo; Exemplo@mail.com; ;)

Editado por AprendizC

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.