Hauptseite | Klassenhierarchie | Alphabetische Liste | Übersicht | Auflistung der Dateien | Datenstruktur-Elemente | Datei-Elemente

zeitverlauf_Versuch1.cpp

gehe zur Dokumentation dieser Datei
00001 #include "zeitverlauf.h"
00002 
00003 #include <strstream>
00004 using std::ostrstream;
00005 
00006 QTime MinSec (int mins, int secs){
00007         if (secs>=60) qDebug("ERROR: QTime MinSec secs>=60");
00008         return QTime(mins/60, mins%60, secs,0);
00009 }
00010 
00011 ostream& operator<< (ostream& os, const structGesamteEinschaetzung& rhs){
00012         os << rhs.Einschaetzung <<"\t"<< rhs.EinschaetzungDavor <<"\t";
00013     os << rhs.Dauer ;
00014         return os;
00015 }
00016 
00017 ZeitVerlauf::ZeitVerlauf () {
00018         Sinneinheiten.insert(QTime2Einschaetzung::value_type(QTime(0,0,0,0),null));
00019 };
00020 
00021 void ZeitVerlauf::anhaengen(const QTime &Endmoment, const EinschaetzungsSkala Einschaetzung){
00022         Sinneinheiten.insert(QTime2Einschaetzung::value_type(Endmoment,Einschaetzung));
00023 }
00024 
00025 QTime ZeitVerlauf::LetzterMoment(){
00026         QTime2Einschaetzung::iterator it=Sinneinheiten.end();
00027         it--;
00028         return it->first;
00029 }
00030 
00031 // obsolet (siehe ZeitVerlauf::GesamteEinschaetzung)
00032 EinschaetzungsSkala ZeitVerlauf::Einschaetzung (const QTime &Endmoment){
00033         QTime2Einschaetzung::iterator it;
00034         it=Sinneinheiten.find(Endmoment);
00035         if (it==Sinneinheiten.end()) return null;
00036         else return it->second;
00037 }
00038 
00039 // obsolet (siehe ZeitVerlauf::GesamteEinschaetzung)
00040 EinschaetzungsSkala ZeitVerlauf::EinschaetzungDavor (const QTime &Endmoment){
00041         QTime2Einschaetzung::iterator it;
00042         it=Sinneinheiten.find(Endmoment); 
00043         if (it==Sinneinheiten.end() || it==Sinneinheiten.begin()) 
00044                 return null; // Intervallende existiert nicht oder schon am Intervallanfang
00045         it--;
00046         return it->second;
00047 }
00048 
00049 // obsolet (siehe ZeitVerlauf::GesamteEinschaetzung)
00050 int ZeitVerlauf::Dauer (const QTime &Endmoment){
00051         QTime2Einschaetzung::iterator it2, it1;
00052         it2=Sinneinheiten.find(Endmoment);
00053         if (it2==Sinneinheiten.end()) return -2; // Intervallende existiert nicht
00054         if (it2==Sinneinheiten.begin()) return -1; // Intervallanfang existiert nicht
00055         it1=it2; it1--;
00056         return (it1->first).secsTo(it2->first);
00057 };
00058 
00059 structGesamteEinschaetzung ZeitVerlauf::GesamteEinschaetzung (const QTime &Endmoment){
00060         structGesamteEinschaetzung temp;
00061 
00062         QTime2Einschaetzung::iterator it2, it1;
00063         it2=Sinneinheiten.find(Endmoment);
00064         if (it2==Sinneinheiten.end())   // Intervallende existiert nicht
00065                 return structGesamteEinschaetzung(null,null,-2); 
00066         if (it2==Sinneinheiten.begin()) // Intervallanfang existiert nicht
00067                 return structGesamteEinschaetzung(null,null,-1); 
00068         temp.Einschaetzung=it2->second;
00069         it1=it2;  it1--;
00070         temp.EinschaetzungDavor=it1->second;
00071         temp.Dauer=(it1->first).secsTo(it2->first);
00072         return temp;
00073 }
00074 
00075 bool ZeitVerlauf::printGesamteEinschaetzung (const QTime &Endmoment, QString &ergebnis){
00076         structGesamteEinschaetzung ges;
00077         ges=GesamteEinschaetzung (Endmoment);
00078         
00079         ostrstream ss;
00080         ss << Endmoment.toString().latin1() ;
00081         if ( ges.Dauer<0 ) {
00082                 ss << '\0';
00083                 ergebnis=ss.str();
00084                 return false;
00085         }
00086         ss <<"\t"<< ges <<'\0';
00087         ergebnis=ss.str();
00088         return true;
00089 }
00090 /*
00091 bool printGesamtenZeitVerlauf (QString &ergebnis){
00092         bool korrekt=true;
00093         structGesamteEinschaetzung jetzt, vorher;
00094         ostrstream ss;
00095         QTime2Einschaetzung::iterator it;
00096         it=verlauf.begin();
00097         ss<<(*it).first.toString();
00098 
00099         for ( ; it!= verlauf.end(); ++it){
00100                 ss<< (*it).first.toString();
00101                  (*theIterator).second);
00102 
00103 */
00104 
00105 void ZeitVerlauf::testZeitverlauf(){
00106         anhaengen (MinSec(0,13), TL);
00107         anhaengen (MinSec(0,23), TNL);
00108         anhaengen (MinSec(0,37), KNL);
00109         anhaengen (MinSec(1,10), KL);
00110         qDebug("Einschätzung (0:00) %d", Einschaetzung(MinSec(0,0)) );
00111         qDebug("Einschätzung (0:13) %d", Einschaetzung(MinSec(0,13)) );
00112         qDebug("Einschätzung (0:23) %d", Einschaetzung(MinSec(0,23)) );
00113         qDebug("Einschätzung (0:37) %d", Einschaetzung(MinSec(0,37)) );
00114         qDebug("Einschätzung (1:10) %d", Einschaetzung(MinSec(1,10)) );
00115         qDebug("Einschätzung (1:11) %d", Einschaetzung(MinSec(1,11)) );
00116 
00117         qDebug("EinschätzungDavor (0:00) %d", EinschaetzungDavor(MinSec(0,0)) );
00118         qDebug("EinschätzungDavor (0:13) %d", EinschaetzungDavor(MinSec(0,13)) );
00119         qDebug("EinschätzungDavor (0:23) %d", EinschaetzungDavor(MinSec(0,23)) );
00120         qDebug("EinschätzungDavor (0:37) %d", EinschaetzungDavor(MinSec(0,37)) );
00121         qDebug("EinschätzungDavor (1:10) %d", EinschaetzungDavor(MinSec(1,10)) );
00122         qDebug("EinschätzungDavor (1:11) %d", EinschaetzungDavor(MinSec(1,11)) );
00123 
00124         qDebug("Dauer (0:00) %d", Dauer(MinSec(0,0)) );
00125         qDebug("Dauer (0:13) %d", Dauer(MinSec(0,13)) );
00126         qDebug("Dauer (0:23) %d", Dauer(MinSec(0,23)) );
00127         qDebug("Dauer (0:37) %d", Dauer(MinSec(0,37)) );
00128         qDebug("Dauer (1:10) %d", Dauer(MinSec(1,10)) );
00129         qDebug("Dauer (1:11) %d", Dauer(MinSec(1,11)) );
00130 
00131         qDebug("letzter Moment " + LetzterMoment().toString() );
00132 
00133     QTime EndMoment;
00134         structGesamteEinschaetzung ges;
00135         ostrstream ss;
00136 
00137         EndMoment=MinSec(1,10);
00138         ges=GesamteEinschaetzung(EndMoment);
00139         ss << EndMoment.toString().latin1() <<"\t"<< ges <<"\n"<<'\0';
00140         qDebug(ss.str());
00141 
00142         QString testString;     bool korrekt;
00143         korrekt=printGesamteEinschaetzung (MinSec(0,0), testString); qDebug(testString);
00144         korrekt=printGesamteEinschaetzung (MinSec(0,13), testString); qDebug(testString);
00145         korrekt=printGesamteEinschaetzung (MinSec(0,23), testString); qDebug(testString);
00146         korrekt=printGesamteEinschaetzung (MinSec(0,37), testString); qDebug(testString);
00147         korrekt=printGesamteEinschaetzung (MinSec(1,10), testString); qDebug(testString);
00148         korrekt=printGesamteEinschaetzung (MinSec(1,11), testString); qDebug(testString);
00149         korrekt=printGesamteEinschaetzung (MinSec(71,11), testString); qDebug(testString);
00150 };
00151 
00152 void testQTimeMap(){
00153         QTime2Einschaetzung verlauf;
00154         QTime2Einschaetzung::iterator theIterator;
00155 
00156         QTime Endzeitpunkt=QTime(0,1,12,0);
00157         verlauf.insert(QTime2Einschaetzung::value_type(Endzeitpunkt,TL));
00158         Endzeitpunkt=Endzeitpunkt.addSecs(7);
00159         verlauf.insert(QTime2Einschaetzung::value_type(Endzeitpunkt,KL));
00160         Endzeitpunkt=Endzeitpunkt.addSecs(-70);
00161         verlauf.insert(QTime2Einschaetzung::value_type(Endzeitpunkt,TNL));
00162         verlauf.insert(QTime2Einschaetzung::value_type(Endzeitpunkt,KNL));
00163 
00164     for (theIterator = verlauf.begin(); theIterator!= verlauf.end(); ++theIterator)
00165         qDebug((*theIterator).first.toString()+" %d", (*theIterator).second);
00166 
00167         QTime Endzeitpunkt2=Endzeitpunkt.addSecs(1);
00168         ;
00169         QTime2Einschaetzung::key_compare vergleiche=verlauf.key_comp();
00170         qDebug("vergleich<: %d",vergleiche(Endzeitpunkt, Endzeitpunkt2));
00171         qDebug("vergleich>=: %d",vergleiche(Endzeitpunkt2, Endzeitpunkt));
00172 
00173         qDebug("Bekannter Eintrag: %d",verlauf.find(QTime(0,1,19,0))->second);
00174         qDebug("Unbekannter Eintrag(=end()): %d",verlauf.find(QTime(0,1,18,0))->second);
00175 
00176         qDebug("bounds liefern gleichen, höheren key oder end()");
00177     theIterator=verlauf.lower_bound(QTime(0,1,11,0));
00178         qDebug("lower bound (1:11): "+ theIterator->first.toString());
00179         theIterator=verlauf.upper_bound(QTime(0,1,11,0));
00180         qDebug("upper bound (1:11): "+ theIterator->first.toString());
00181 
00182     theIterator=verlauf.lower_bound(QTime(0,1,20,0));
00183         qDebug("lower bound (1:20): "+ theIterator->first.toString());
00184         theIterator=verlauf.upper_bound(QTime(0,1,20,0));
00185         qDebug("upper bound (1:20): "+ theIterator->first.toString());
00186 
00187         qDebug("Bei Treffer: lower bound liefert gleichen, upper bound liefert höheren key (oder end())");
00188     theIterator=verlauf.lower_bound(QTime(0,1,12,0));
00189         qDebug("lower bound (1:12): "+ theIterator->first.toString());
00190         theIterator=verlauf.upper_bound(QTime(0,1,12,0));
00191         qDebug("upper bound (1:12): "+ theIterator->first.toString());
00192         theIterator=verlauf.upper_bound(QTime(0,1,19,0));
00193         qDebug("upper bound (1:19): "+ theIterator->first.toString());
00194 
00195         // Also für schon verbrauchten Zeitpunkten: 
00196         // Suche nach lower_bound(Reglerstand), rot wenn <> end();
00197 };

Erzeugt am Mon Jun 16 18:08:24 2003 für LFTVideo von doxygen 1.3.2