Ir para o conteúdo
AprendizC

[Resolvido] CSV em C++

Mensagens Recomendadas

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


Ligação para a mensagem
Partilhar noutros sites
pikax

Como estas a fazer e o que tens feito?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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


Ligação para a mensagem
Partilhar noutros sites
pikax

e qual e a duvida?

Nao estas a espera que alguem va' fazer o trabalho, pois nao?


Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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


Ligação para a mensagem
Partilhar noutros sites
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


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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


Ligação para a mensagem
Partilhar noutros sites
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


Ligação para a mensagem
Partilhar noutros sites
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


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
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


Ligação para a mensagem
Partilhar noutros sites
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


Ligação 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.