Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Scelta del contenitore
Forum Updated to NodeBB v4.3 + New Features

Scelta del contenitore

Scheduled Pinned Locked Moved Solved Italian
5 Posts 2 Posters 798 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • PollyP Offline
    PollyP Offline
    Polly
    wrote on last edited by
    #1

    Buon giorno avrei bisogno di sapere quale contenitore sarebbe utile per un'analisi che devo fare: ho un file csv diviso in due colonne. La prima mi indica con 1 quando è stato attivato il motore e 0 quando è stato spento. Per ciascuno dei due eventi sono stati registrati la data e l'ora in cui è avvenuta quell'evento. Io devo poter calcolare il tempo complessivo in cui il motore ha funzionato, sommando le differenze di tempo tra l'evento 0 e l'evento 1 che appunto rappresenta questo tempo. Potete darmi un suggerimento

    1 Reply Last reply
    0
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by VRonin
      #2
      struct StatoMotore{
      bool acceso;
      QDateTime dataOra;
      StatoMotore()
      :acceso(false)
      {}
      StatoMotore(bool acc, const QDateTime& d_o)
      :acceso(acc)
      ,dataOra(d_o)
      {}
      StatoMotore(const StatoMotore& other) = default;
      StatoMotore& operator=(const StatoMotore& other) = default;
      };
      
      QVector<StatoMotore> listaStati;
      QFile fileDati("dati.csv");
      fileDati.open(QFile::ReadOnly);
      QTextStream lettore(&fileDati);
      QString linea;
      while (stream.readLineInto(&line)) {
      const QVector<QStringRef> parti = linea.splitRef(QLatin1Char(','),Qt::SkipEmptyParts);
      listaStati.append(StatoMotore(parti.at(0).toInt()==1, QDateTime::fromString(parti.at(1).toString(),QStringLiteral("dd/MM/yyyy hh:mm:ss"))));
      }
      std::sort(listaStati.begin(),listaStati.end(),[](const StatoMotore& a,const StatoMotore& b)->bool{return a.dataOra<b.dataOra;});
      qint64 secAcceso=0;
      auto i=listaStati.cbegin();
      bool era_acceso=i->acceso;
      const auto iEnd=listaStati.cend();
      for(auto iPrev=i++;i!=iEnd;++i, ++iPrev){
      if(!i->acceso && era_acceso)
      secAcceso += iPrev->dataOra.msecsTo(i->dataOra)/static_cast<qint64>(1000);
      era_acceso=i->acceso;
      }
      qDebug() << "Il motore e' stato acceso per " << secAcceso << " secondi";
      

      Potresti anche usare std::pair<bool,QDateTime> invece di StatoMotore ma di solito preferisco l'approccio "custom struct"

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      1 Reply Last reply
      0
      • PollyP Offline
        PollyP Offline
        Polly
        wrote on last edited by
        #3

        Perfetto provo e poi ti do conferma per il forum

        1 Reply Last reply
        0
        • PollyP Offline
          PollyP Offline
          Polly
          wrote on last edited by Polly
          #4

          Ciao allora ho provato a fare un oggetto anzichè una struct perchè magari potrei rielaborarlo per altri elementi. L'unica cosa che non riesco a capire è se ho sbagliato il costruttore, perchè i dati non vengono mi sembrano vengano memorizzati nel vettore. Soprattutto l'elemento QDateTime, perchè mi risulta vuoto.
          Per cui penso di aver sbagliato qualcosa.

          #include "analizeobj.h"
          
          Analizeobj::Analizeobj()
          {
               event="";
               registration= QDateTime::fromString("01/01/1900 00:00", "dd/MM/YYYY hh:mm");
          }
          
          Analizeobj::Analizeobj(QString mEvent, QDateTime mRegistration)
          {
              Analizeobj::setEvent(mEvent);
              Analizeobj::setRegistration(mRegistration);
          }
          
          QString Analizeobj::getEvent()
          {
              return event;
          }
          
          QDateTime Analizeobj::getRegistrazion()
          {
              return registration;
          }
          
          void Analizeobj::setEvent(QString mEvent)
          {
              if (mEvent != event)
              {
                  event = mEvent;
              }
              else return;
          }
          
          void Analizeobj::setRegistration(QDateTime mRegistration)
          {
              if (mRegistration != registration)
              {
                  registration = mRegistration;
              }
          }
          
          #include <QDateTime>
          
          
          class Analizeobj
          {
          public:
              Analizeobj();
              Analizeobj(QString mEvent, QDateTime mRegistration);
              QString getEvent();
              QDateTime getRegistrazion();
              void setEvent(QString);
              void setRegistration(QDateTime);
          private:
              QString event;
              QDateTime registration;
          };
          
          #endif // ANALIZEOBJ_H
          

          e questo è il comando che ho usato per inserire i dati nel nel vettore

           datogrezzo.append(Analizeobj(parti.at(0).toString(),QDateTime::fromString(parti.at(1).toString(),QStringLiteral("dd/MM/YYYY hh:mm"))));
          
          1 Reply Last reply
          0
          • PollyP Offline
            PollyP Offline
            Polly
            wrote on last edited by
            #5

            Visto l'errore
            Nel formato dell'anno ho usato "YYYY" anzichè "yyyy".
            Adesso funziona tutto , grazie davvero

            1 Reply Last reply
            0

            • Login

            • Login or register to search.
            • First post
              Last post
            0
            • Categories
            • Recent
            • Tags
            • Popular
            • Users
            • Groups
            • Search
            • Get Qt Extensions
            • Unsolved