Ir para conteúdo
Fórum Script Brasil
  • 0

Comparação entre duas datas no C++


Maristela Fialho

Pergunta

Gente, estou tentando fazer a comparação entre duas datas que devem ser lidas dentro de um arquivo .txt mas esta sempre dando erro, o máximo que consegui foi fazer o programa ler a informação, mas acho que no meio da comparação ela não consegue escrever no arquivo .txt então o arquivo fica em branco. Alguém que saiba o motivo disso?

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main () {
  string line;
  ifstream myfile ("entrada.txt");
  if (myfile.is_open()) {
    while (! myfile.eof() ) {
            ofstream myfile ("entrada.txt");
    //aqui comeca o pesadelo
    unsigned short int dd, mm, aaaa, xx, yy, zzzz;


   if (aaaa>=zzzz) {
    if (mm>=yy) {
        if (dd>=xx) {
            cout<<dd<<"/"<<mm<<"/"<<aaaa<<endl;
            cout<<xx<<"/"<<yy<<"/"<<zzzz<<endl;
        }
    }else if (aaaa==zzzz && mm==yy) {
            cout<<xx<<"/"<<yy<<"/"<<zzzz<<endl;
            cout<<dd<<"/"<<mm<<"/"<<aaaa<<endl;
    }
   }else{
            cout<<dd<<"/"<<mm<<"/"<<aaaa<<endl;
            cout<<xx<<"/"<<yy<<"/"<<zzzz<<endl;
   }
    if (aaaa==zzzz && mm>=yy) {
            cout<<dd<<"/"<<mm<<"/"<<aaaa<<endl;
            cout<<xx<<"/"<<yy<<"/"<<zzzz<<endl;
    }else if (aaaa==zzzz && mm==yy && dd>=xx) {
            cout<<dd<<"/"<<mm<<"/"<<aaaa<<endl;
            cout<<xx<<"/"<<yy<<"/"<<zzzz<<endl;
    }
    }
    myfile.close();
  }

  else cout << "Unable to open file";

  return 0;
}

Aqui o código / ATAAA

Editado por Maristela Fialho
Link para o comentário
Compartilhar em outros sites

  • 0
Agora, vangodp disse:

Qual o objetivo do seu programa? Comparar em que sentido? Tipo enviar a data mais antiga para o arquivo d saída? Algo assim?

é isso na verdade, mas eu mudei algumas coisas no código e agora ele fala "cannot open output file"

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main () {
  string line;
  ofstream file ("saida.txt");
  ifstream myfile ("entrada.txt");
  if (myfile.is_open()) {
    while (! myfile.eof() ) {
    //aqui comeca o pesadelo
    unsigned short int dd, mm, aaaa, xx, yy, zzzz;


   if (aaaa>=zzzz) {
     if (mm>=yy) {
        if (dd>=xx) {
            file<<dd<<"/"<<mm<<"/"<<aaaa<<endl;
            file<<xx<<"/"<<yy<<"/"<<zzzz<<endl;
        } else if (aaaa==zzzz && mm==yy) {
            file<<xx<<"/"<<yy<<"/"<<zzzz<<endl;
            file<<dd<<"/"<<mm<<"/"<<aaaa<<endl;
    }
    }else{
            file<<dd<<"/"<<mm<<"/"<<aaaa<<endl;
            file<<xx<<"/"<<yy<<"/"<<zzzz<<endl;
   }
   }
    if (aaaa==zzzz && mm>=yy) {
            file<<dd<<"/"<<mm<<"/"<<aaaa<<endl;
            file<<xx<<"/"<<yy<<"/"<<zzzz<<endl;
    }else if (aaaa==zzzz && mm==yy && dd>=xx) {
            file<<dd<<"/"<<mm<<"/"<<aaaa<<endl;
            file<<xx<<"/"<<yy<<"/"<<zzzz<<endl;
    }
    }
    file.close();
  }return 0;
}

 

WhatsApp Image 2017-08-29 at 19.41.35.jpeg

Link para o comentário
Compartilhar em outros sites

  • 0

Para carregar o arquivo de forma mais ou menos correta deveria ser feito isso:
 

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

struct Data{
int dia, mes, ano;
};

int main () {
    
    ifstream fin;
    fin.open("entrada.txt", std::ifstream::in);
    
    if( !fin.is_open() ){
        return 1;
    }
    
    
    const int MAXDATA = 2;
    Data d[MAXDATA];
    char lixo;
    
    for (int i = 0; i < MAXDATA ; i++) {
        fin >> d[i].dia >> lixo >> d[i].mes >> lixo >> d[i].ano;
        cout << d[i].dia << '/' << d[i].mes << '/' << d[i].ano << endl; 
        
    }   

    return 0;
}

Logo depois usar o processo inverso para gravar o arquivo.

 

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui eu fiz uma função simples para comparar datas:

struct Data{
    int dia, mes, ano;
};

/*Retorna 0 se data1 == data2, um número positivo se
  data1 > data2, ou negativo se data1 < data2. */
int compara_datas(Data data1, Data data2){
    int delta_anos, delta_meses, delta_dias;
  
    delta_anos = data1.ano - data2.ano;
    delta_meses = data1.mes - data2.mes;
    delta_dias = data1.dia - data2.dia;
  
    if (delta_anos != 0)
        return delta_anos;
  
    if (delta_meses != 0)
        return delta_meses;
  
    return delta_dias;
}

 

Editado por isrnick
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...