Jump to content
AprendizC

[Resolvido] CSV em C++

Recommended Posts

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:

Edited by AprendizC

Share this post


Link to post
Share on other 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."

Share this post


Link to post
Share on other 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:

Share this post


Link to post
Share on other 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."

Share this post


Link to post
Share on other 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

Edited by Rui Carlos
GeSHi

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Edited by AprendizC

Share this post


Link to post
Share on other 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.

Edited by Flinger

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites
AprendizC

Ja respondi no topico anterior.

e ja corrigi o codigo.

Edited by AprendizC

Share this post


Link to post
Share on other 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

Edited by 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."

Share this post


Link to post
Share on other 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.

Edited by Flinger

Share this post


Link to post
Share on other 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; ;)

Edited by AprendizC

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.