Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Programm C++ problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
19.05.2018, 14:27 Uhr
Power33



Hallo alle zusammen ich habe in der AUfgabe eine Rumpf Implementierung gegeben weiss aber jetzt nicht wie ich das bei der a) implementieren soll?


C++:

#ifndef CDIMMERLOGENTRY_H_
#define CDIMMERLOGENTRY_H_

#include <iostream>

/**
* Diese Klasse modelliert ein Einschalten des Dimmers zu einem
* gegebenen Zeitpunkt, f¸r eine bestimmte Dauer und mit einem
* bestimmten Dimm-Faktor (ein Wert zwischen 0 (ausschliefllich)
* und 1 (einschliefllich)).
*
* Um Speicherplatz zu sparen, werden der Einschaltzeitpunkt und
* die Einschaltdauer mit Attributen vom Typ unsigned short
* modelliert. Da deren Wertebereich nicht ganz ausreicht, um
* alle Sekunden eines Tages zu rep‰sentieren (24*60*60 > 2^16),
* werden die Sekundenangaben f¸r die Speicherung durch 2 geteilt
* (und beim Auslesen der Werte wieder mit 2 multipliziert).
* Die daduch entstehende Ungenauigkeit bei den Zeitangaben
* ist im Rahmen der vorgesehenen Anwendungsf‰lle akzeptabel.
*
* Auch der Dimm-Faktor soll effizient gespeichert werden. Der
* als float ¸bergebene Wert zwischen 0 und 1 wird daher
* f¸r die Speicherung in einen unsigned short gewandelt.
* Nutzen Sie den zur Verf¸gung stehenden Wertebereich
* vollst‰ndig aus, d.h. speichern Sie den Faktor mit
* mˆglichst hoher Genauigkeit.
*/

class CDimmerLogEntry {
private:
    unsigned short m_startTime;
    unsigned short m_duration;
    unsigned short m_factor;

    /**
     * Setzt das Attribut m_factor nach entsprechender
     * Umrechnung des ¸bergebenen Wertes. Die Methode
     * wertet auch die Zusicherung (s.u.) aus.
     */

    void setFactor(float factor);

public:
    /**
     * Erzeugt einen neuen Log-Eintrag mit der angegebenen
     * Einschaltzeit, dem angegebenen Dimm-Faktor und einer
     * Einschaltdauer von 0.
     *
     * startTime: die Einschaltzeit als Sekunden seit Mitternacht.
     *            Der Wert muss kleiner sein als die Anzahl
     *            Sekunden eines Tages. Ist das nicht der Fall,
     *            wird statt dessen der Maximalwert (sp‰test
     *            mˆglicher Einschaltzeitpunkt an einem Tag)
     *            genommen.
     *
     * factor:    der Dimm-Faktor. Der Wert muss grˆfler 0 und
     *            kleiner gleich 1 sein. Verletzt der angegebene
     *            Wert diese Bedingung, wird der Wert 1 genommen.
     */

    CDimmerLogEntry(unsigned int startTime, float factor = 0.5);

    /**
     * Erzeugt einen neuen Log-Eintrag mit der aktuellen Zeit
     * als Einschaltzeit, dem angegebenen Dimm-Faktor und einer
     * Einschaltdauer von 0.
     *
     * factor:    der Dimm-Faktor. Der Wert muss grˆfler 0 und
     *            kleiner gleich 1 sein. Verletzt der angegebene
     *            Wert diese Bedingung, wird der Wert 1 genommen.
     */

    CDimmerLogEntry(float factor = 0.5);

    /**
     * Legt die Ausschaltzeit des Dimmers und damit die
     * Einschaltdauer fest.
     *
     * offTime:   die Ausschaltzeit als Sekunden seit Mitternacht.
     *            Ist der Wert kleiner als die Einschaltzeit, wird
     *            davon ausgegangen, dass der Dimmer am n‰chsten
     *            Tag ausgeschaltet wurde (z.B. bedeutet bei einer
     *            Einschaltzeit 22:00:00 ein Ausschalten um 01:00:00
     *            dass der Dimmer 3 Stunden angeschaltet war).
     */

    void switchedOffAt(unsigned int offTime);

    /**
     * Legt die aktuelle Zeit als Ausschaltzeitpunkt fest.
     */

    void switchedOff();

    /**
     * Liefert den Einschaltzeitpunkt.
     */

    unsigned int getStartTime() const;

    /**
     * Liefert die Einschaltdauer.
     */

    unsigned int getDuration() const;

    /**
     * Liefert den Dimm-Faktor.
     */

    float getFactor() const;

};

#endif /* CDIMMERLOGENTRY_H_ */







C++:

/*
* CTimeStamp.h
*/


#ifndef CTIMEOFDAY_H_
#define CTIMEOFDAY_H_

#include <string>

class CTimeOfDay {
private:
    unsigned int m_secsSinceMidnight;

    /**
     * Hilfsmethode zum Konvertieren eines Ganzzahl-Wertes
     * in eine Zeichenkette.
     */

    std::string intToString(unsigned int value);

public:
    /**
     * Erzeugt eine neue Zeitangabe mit der aktuellen Uhrzeit.
     */

    CTimeOfDay();

    /**
     * Erzeugt eine neue Zeitangabe aus der Angabe der
     * seit Mitternacht vergangenen Sekunden.
     */

    CTimeOfDay(unsigned int secsSinceMidnight);

    /**
     * Erzeugt eine neue Zeitangabe aus der Angabe einer
     * Uhrzeit im 24-Stunden Format ("hh:mm:ss", mit hh=Stunden,
     * mm=Minuten und ss=Sekunden).
     */

    CTimeOfDay(std::string timeOfDay);

    /**
     * Liefert den durch diese Zeitangabe repr‰sentierten
     * Zeitpunkt als Sekunden seit Mitternacht.
     */

    long getSecsSinceMidgnight();

    /**
     * Liefert den durch diese Zeitangabe repr‰sentierten
     * Zeitpunkt im 24-Stunden Format ("hh:mm:ss", mit hh=Stunden,
     * mm=Minuten und ss=Sekunden).
     */

    std::string asTime();
};

#endif /* CTIMEOFDAY_H_ */








C++:

/*
* CTimeStamp.cpp
*/


#include "CTimeOfDay.h"

#include <stdio.h>
#include <cstring>
#include <time.h>
using namespace std;

CTimeOfDay::CTimeOfDay() {
      time_t rawtime;
      struct tm * timeinfo;

      time (&rawtime);
      timeinfo = localtime (&rawtime);
      m_secsSinceMidnight = timeinfo->tm_hour * 3600
              + timeinfo->tm_min * 60 + timeinfo->tm_sec;
}

CTimeOfDay::CTimeOfDay(unsigned int secsSinceMidnight) {
    m_secsSinceMidnight = secsSinceMidnight;
}

CTimeOfDay::CTimeOfDay(std::string timeOfDay) {
    unsigned int hours;
    unsigned int minutes;
    unsigned int seconds;
    sscanf(timeOfDay.c_str(), "%02u:%02u:%02u", &hours, &minutes, &seconds);
    m_secsSinceMidnight = hours * 3600 + minutes * 60 + seconds;
}

std::string CTimeOfDay::intToString(unsigned int value) {
    string result = "";
    do {
        result = (char)('0' + value % 10) + result;
        value /= 10;
    } while (value > 0);
    return result;
}

long CTimeOfDay::getSecsSinceMidgnight() {
    return m_secsSinceMidnight;
}

std::string CTimeOfDay::asTime() {
    // Ersetzen Sie die nachfolgende Anweisung!
    return intToString(m_secsSinceMidnight);
}





main.cpp


C++:

////////////////////////////////////////////////////////////////////////////////
// Header-Dateien
#include <iostream>        // Header f¸r die Standard-IO-Objekte (z.B. cout, cin)
#include <stdlib.h>
// F¸gen Sie hier weitere benˆtigte Header-Dateien der
// Standard-Bibliothek ein z.B.
// #include <string>

using namespace std;    // Erspart den scope vor Objekte der
                        // C++-Standard-Bibliothek zu schreiben
                        // z.B. statt "std::cout" kann man "cout" schreiben

// Inkludieren Sie hier die Header-Files Ihrer Klassen, z.B.
// #include "CFraction.h"


// Hauptprogramm
// Dient als Testrahmen, von hier aus werden die Klassen aufgerufen
int main (void)
{
    // TODO: Tragen Sie hier Ihren Namen, die Matrikelnummer und die Rechnernummer ein
    cout << "Name: ..., Matrikelnummer: ..., Rechnernummer: ..." << endl << endl;

    // Aufgabe 1:



    // Aufgabe 2:



    // Zus‰tzliche Eintr‰ge f¸r Aufgabe 2f)
    /*
    CDimmerLogEntry entry2(39920, 0.5);
    entry2.switchedOffAt(40800);
    log += entry2;
    CDimmerLogEntry entry3(43800, 0.3);
    entry3.switchedOffAt(60700);
    log += entry3;
    */


    return 0;
}





https://www.pic-upload.de/view-35347791/Bildschirmfoto2018-05-19um14.20.07.png.html


Zitat von Aufgabenstellung:

Eine wichtige Information in einem Protokoll ist der Zeitpunkt. Eine effiziente Möglichkeit, die Uhrzeit zu repräsentieren, ist, die seit Mitternacht vergangenen Sekunden in einer Ganzzahl zu speichern. Leider lässt sich diese Form der Zeitangabe vom Menschen schlecht interpretieren. Daher finden Sie im Proje eine vorbereitete Klasse CTime0fDay. Sie hat ein Attribut vom Typ unsigned int, in dem die seit Mitternacht vergangenen Sekunden gespeichert werden. Die Klasse stellt u. a. einen Konstruktor zur Verfügung, mit dem eine Zeitdarstellung im 24-Stunden Format ("hh:mm:ss", mit hh=Stunden, mm=Minuten und ss=Sekunden) in ein Objekt vom Typ CTime0fDay (und damit in eine Anzahl Sekunden seit Mitternacht) umgewandelt werden kann. Weiterhin kann mit der Methode asTime () der als Ganzzahl gespeicherte Wert in das übliche 24-Stunden-Format konvertiert werden. Weitere Informationen finden Sie in den Kommentaren der Klassendefinition von CTime0fDay.
Hinweis: Beachten Sie, dass Kommentare zu Attributen und Methoden immer vor deren Definition angegeben werden.
Die folgenden Teilaufgaben sollen Ihnen helfen, sich mit der Klasse vertraut zu machen.

a) Leider ist in der Methode asTime () die Umwandlung in das 24-Stunden Format noch nicht implementiert (derzeit wird die Anzahl der Sekunden seit Mitternacht als Zeichenkette zurückgegeben). Korrigieren Sie die Methode so, dass eine Zeichenkette zurückgegeben wird, die die gespeicherte Uhrzeit im 24-Stunden-Format darstellt. Beachten Sie, dass bei den Angaben für Stunde, Minute und Sekunde eine führende „0" ergänzt werden muss, wenn der Wert kleiner als 10 ist.

b) Testen Sie die Methode asTime () , indem Sie in main ein Objekt „timet" vom Typ CTime0fDay für die Uhrzeit 08:30:01 erzeugen und die von asTime ( ) gelieferte Zeit auf der Konsole ausgeben.

c) Ergänzen Sie in der Klasse CTime0fDay mit „Überladen durch Methode" den int operator- (CTime0fDay rhs) , mit dem sich die zwischen zwei Zeitpunkten verstrichenen Anzahl Sekunden ermitteln lässt.

d) Testen Sie den überladenen Operator, indem Sie in main die Differenz zwischen der
aktuellen Zeit und 08:30:01 auf der Konsole ausgeben (geben Sie für eine leichtere Kontrolle des Wertes am besten die Anzahl der verstrichenen Minuten aus). ,.V




Ich hoffe jemand kann mir bei der a) helfen?

Dieser Post wurde am 23.05.2018 um 17:22 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
19.05.2018, 17:38 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Über die Qualität der Aufgabe spreche ich mal jetzt nicht, das ist halt mal wieder eine typische "ich bin Professor und nach 1998 gibt es kein C äh ich meine natürlich C++"-Qualität.

Bzgl deiner Frage: Was genau ist nun deine Schwierigkeit? Aktuell geht es ja um die Methode:


C++:
std::string CTimeOfDay::asTime() {
    // Ersetzen Sie die nachfolgende Anweisung!
    return intToString(m_secsSinceMidnight);
}



Laut deiner Aufgabenstellung, sollst du nun nicht mehr die Sekunden seit Mitternacht als Text zurückgeben, sondern diese im Textformat "HH:MM:SS" zurückgeben. D.h du musst deine Sekunden in Stunden, Minuten und Sekunden "splitten" und das passend formatiert zurückgeben.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
19.05.2018, 21:41 Uhr
Power33



Ich hatte am Anfang gedacht ,dass ich irgendwie versuchen soll die Methode aufzurufen?


C++:
CTimeOfDay::CTimeOfDay(std::string timeOfDay) {
    unsigned int hours;
    unsigned int minutes;
    unsigned int seconds;
    sscanf(timeOfDay.c_str(), "%02u:%02u:%02u", &hours, &minutes, &seconds);
    m_secsSinceMidnight = hours * 3600 + minutes * 60 + seconds;
}



Oder was genau wollen die ?

Dieser Post wurde am 23.05.2018 um 17:17 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.05.2018, 12:25 Uhr
Power33



Hat jemand paar tipps ?

Stecke immer noch fest
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
21.05.2018, 16:44 Uhr
Power33



Jemand noch da?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
23.05.2018, 17:20 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat:

a) Leider ist in der Methode asTime() die Umwandlung in das 24-Stunden Format noch nicht implementiert (derzeit wird die Anzahl der Sekunden seit Mitternacht als Zeichenkette zurückgegeben).
Korrigieren Sie die Methode so, dass eine Zeichenkette zurückgegeben wird, die die gespeicherte Uhrzeit im 24-Stunden-Format darstellt.
Beachten Sie, dass bei den Angaben für Stunde, Minute und Sekunde eine führende „0" ergänzt werden muss, wenn der Wert kleiner als 10 ist.



steht doch exakt da was du tun musst, nicht mehr und nicht weniger


(P.S. habe mir mal erlaubt ein OCR über die Aufgabenstellung zu jagen damit man zitieren kann)
--
class God : public ChuckNorris { };

Dieser Post wurde am 23.05.2018 um 17:22 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
24.05.2018, 10:06 Uhr
Power33



Ich bin mittlerweile schon weiter gekommen .

Scheitere aber bei der h) .

Verstehe nicht was die da von mir wollen?
https://www.pic-upload.de/view-35371381/Bildschirmfoto2018-05-24um09.55.30.png.html


Zitat:


e) Implementieren Sie die setFactor-Methode.
f) Implementieren Sie die Konstruktoren. Beachten Sie die Angaben bezuglich der Wertbereiche der Parameter und das Speicherformat. Verwenden Sie die setFactor-Methode.
g) Implementieren Sie die getxxx-Methoden. Beachten Sie die erforderlichen Umwandlungen vom intemen Speicherformat in die gewilnschte Darstellung.
h) Implementieren Sie die switchedOffAt-Methode und die switchedoff-Methode. Beachten Sie, dass die Verwendung bereits implementierter Methoden die Losung der Aufgabe erleichtern kann. (lnsbesondere sollte z. B. die switchedOff-Methode einfach die switchedOffAt-Methode mit der aktuellen Zeit aufrufen.)
i) Erganzen Sie fur die Klasse die Uberladung des operator« so, dass ein Objekt einfach auf der Konsole ausgegeben werden kann. Die Ausgabe soil folgendes Format haben:
Eingeschaltet von hh:mm:ss bis hh:mm:ss (ca. xx min) bei yy%
(Ohne abschlieflenden Zeilenumbruch). Die Angabe der Einschaltdauer in Minuten und der Faktor in Prozent sollen kaufmannisch gerundet werden. (Bei fehiender Rundung werden 2 Punkte abgezogen.)
(Alternativ konnen Sie eine printO-Methode implementieren, bekommen dann aber weniger Punkte.)
j) Testen Sie die Kiasse CDimmerLogEntry, indem Sie in main
• ein Objekt entryl mit Einschaltzeit 08:30:01 und Dimm-Faktor 0,888 anlegen,
• die Ausschaltzeit auf 10:30:55 festlegen,
• das Objekt mit dem operator« auf der Konsole ausgeben.

Beispielausgabe (beachten Sie, dass die Zahl in der zweiten Zeile davon abhangig ist, wann Sie das Programm laufen lessen):
08:30:01
571
Eingeschaltet von 08:30:00 bis 10:30:54 (ca. 121 min) bei 89%




C++:
* CTimeStamp.h
*/

#ifndef CTIMEOFDAY_H_
#define CTIMEOFDAY_H_

#include <string>
#include<cmath>

class CTimeOfDay {
private:
    unsigned int m_secsSinceMidnight;

    /**
     * Hilfsmethode zum Konvertieren eines Ganzzahl-Wertes
     * in eine Zeichenkette.
     */

    std::string intToString(unsigned int value);

public:
    /**
     * Erzeugt eine neue Zeitangabe mit der aktuellen Uhrzeit.
     */

    CTimeOfDay();

    /**
     * Erzeugt eine neue Zeitangabe aus der Angabe der
     * seit Mitternacht vergangenen Sekunden.
     */

    CTimeOfDay(unsigned int secsSinceMidnight);

    /**
     * Erzeugt eine neue Zeitangabe aus der Angabe einer
     * Uhrzeit im 24-Stunden Format ("hh:mm:ss", mit hh=Stunden,
     * mm=Minuten und ss=Sekunden).
     */

    CTimeOfDay(std::string timeOfDay);

    /**
     * Liefert den durch diese Zeitangabe repr�sentierten
     * Zeitpunkt als Sekunden seit Mitternacht.
     */

    long getSecsSinceMidgnight();

    /**
     * Liefert den durch diese Zeitangabe repr�sentierten
     * Zeitpunkt im 24-Stunden Format ("hh:mm:ss", mit hh=Stunden,
     * mm=Minuten und ss=Sekunden).
     */

    std::string asTime();
    int operator-(CTimeOfDay rhs);
};

#endif /* CTIMEOFDAY_H_ */





cpp


C++:
/*
* CTimeStamp.cpp
*/


#include "CTimeOfDay.h"

#include <stdio.h>
#include <cstring>
#include <time.h>
using namespace std;

CTimeOfDay::CTimeOfDay() {
      time_t rawtime;
      struct tm * timeinfo;

      time (&rawtime);
      timeinfo = localtime (&rawtime);
      m_secsSinceMidnight = timeinfo->tm_hour * 3600
              + timeinfo->tm_min * 60 + timeinfo->tm_sec;
}

CTimeOfDay::CTimeOfDay(unsigned int secsSinceMidnight) {
    m_secsSinceMidnight = secsSinceMidnight;
}

CTimeOfDay::CTimeOfDay(std::string timeOfDay) {
    unsigned int hours;
    unsigned int minutes;
    unsigned int seconds;
    sscanf(timeOfDay.c_str(), "%02u:%02u:%02u", &hours, &minutes, &seconds);
    m_secsSinceMidnight = hours * 3600 + minutes * 60 + seconds;
}

std::string CTimeOfDay::intToString(unsigned int value) {
    string result = "";
    do {
        result = (char)('0' + value % 10) + result;
        value /= 10;
    } while (value > 0);
    return result;
}

long CTimeOfDay::getSecsSinceMidgnight() {
    return m_secsSinceMidnight;
}

std::string CTimeOfDay::asTime() {
    unsigned int hours = m_secsSinceMidnight/3600;
        unsigned int minutes = m_secsSinceMidnight/60%60 ;
        unsigned int seconds = m_secsSinceMidnight%60;
    // Ersetzen Sie die nachfolgende Anweisung!

        string xhours;
        string xminutes;
        string xseconds;
        if(hours < 10) {
        xhours = "0"+intToString(hours);
        }
        else {
        xhours = intToString(hours);
        }
        if(minutes<10){
         xminutes = "0"+intToString(minutes);
        }
        else{
            xminutes = intToString(minutes);

        }
        if(seconds< 10){
         xseconds = "0"+intToString(seconds) ;
        }
        else{
            xseconds = intToString(seconds);
        }


        //string gesamt = "0"+intToString(hours)+intToString(minutes)+intToString(seconds);
        string gesamt = xhours+":"+xminutes+":"+xseconds;
        return gesamt;
}

int CTimeOfDay::operator-(CTimeOfDay rhs){
    unsigned int zeit;

    if(m_secsSinceMidnight < 0){

        zeit = m_secsSinceMidnight*-1;


    }
    zeit = m_secsSinceMidnight - rhs.m_secsSinceMidnight;


}





Header:

C++:

* CDimmerLogEntry.h
*/

#ifndef CDIMMERLOGENTRY_H_
#define CDIMMERLOGENTRY_H_

#include <iostream>

/**
* Diese Klasse modelliert ein Einschalten des Dimmers zu einem
* gegebenen Zeitpunkt, f�r eine bestimmte Dauer und mit einem
* bestimmten Dimm-Faktor (ein Wert zwischen 0 (ausschlie�lich)
* und 1 (einschlie�lich)).
*
* Um Speicherplatz zu sparen, werden der Einschaltzeitpunkt und
* die Einschaltdauer mit Attributen vom Typ unsigned short
* modelliert. Da deren Wertebereich nicht ganz ausreicht, um
* alle Sekunden eines Tages zu rep�sentieren (24*60*60 > 2^16),
* werden die Sekundenangaben f�r die Speicherung durch 2 geteilt
* (und beim Auslesen der Werte wieder mit 2 multipliziert).
* Die daduch entstehende Ungenauigkeit bei den Zeitangaben
* ist im Rahmen der vorgesehenen Anwendungsf�lle akzeptabel.
*
* Auch der Dimm-Faktor soll effizient gespeichert werden. Der
* als float �bergebene Wert zwischen 0 und 1 wird daher
* f�r die Speicherung in einen unsigned short gewandelt.
* Nutzen Sie den zur Verf�gung stehenden Wertebereich
* vollst�ndig aus, d.h. speichern Sie den Faktor mit
* m�glichst hoher Genauigkeit.
*/

class CDimmerLogEntry {
private:
    unsigned short m_startTime;
    unsigned short m_duration;
    unsigned short m_factor;

    /**
     * Setzt das Attribut m_factor nach entsprechender
     * Umrechnung des �bergebenen Wertes. Die Methode
     * wertet auch die Zusicherung (s.u.) aus.
     */

    void setFactor(float factor);

public:
    /**
     * Erzeugt einen neuen Log-Eintrag mit der angegebenen
     * Einschaltzeit, dem angegebenen Dimm-Faktor und einer
     * Einschaltdauer von 0.
     *
     * startTime: die Einschaltzeit als Sekunden seit Mitternacht.
     *            Der Wert muss kleiner sein als die Anzahl
     *            Sekunden eines Tages. Ist das nicht der Fall,
     *            wird statt dessen der Maximalwert (sp�test
     *            m�glicher Einschaltzeitpunkt an einem Tag)
     *            genommen.
     *
     * factor:    der Dimm-Faktor. Der Wert muss gr��er 0 und
     *            kleiner gleich 1 sein. Verletzt der angegebene
     *            Wert diese Bedingung, wird der Wert 1 genommen.
     */

    CDimmerLogEntry(unsigned int startTime, float factor = 0.5);

    /**
     * Erzeugt einen neuen Log-Eintrag mit der aktuellen Zeit
     * als Einschaltzeit, dem angegebenen Dimm-Faktor und einer
     * Einschaltdauer von 0.
     *
     * factor:    der Dimm-Faktor. Der Wert muss gr��er 0 und
     *            kleiner gleich 1 sein. Verletzt der angegebene
     *            Wert diese Bedingung, wird der Wert 1 genommen.
     */

    CDimmerLogEntry(float factor = 0.5);

    /**
     * Legt die Ausschaltzeit des Dimmers und damit die
     * Einschaltdauer fest.
     *
     * offTime:   die Ausschaltzeit als Sekunden seit Mitternacht.
     *            Ist der Wert kleiner als die Einschaltzeit, wird
     *            davon ausgegangen, dass der Dimmer am n�chsten
     *            Tag ausgeschaltet wurde (z.B. bedeutet bei einer
     *            Einschaltzeit 22:00:00 ein Ausschalten um 01:00:00
     *            dass der Dimmer 3 Stunden angeschaltet war).
     */

    void switchedOffAt(unsigned int offTime);

    /**
     * Legt die aktuelle Zeit als Ausschaltzeitpunkt fest.
     */

    void switchedOff();

    /**
     * Liefert den Einschaltzeitpunkt.
     */

    unsigned int getStartTime() const;

    /**
     * Liefert die Einschaltdauer.
     */

    unsigned int getDuration() const;

    /**
     * Liefert den Dimm-Faktor.
     */

    float getFactor() const;

};

#endif /* CDIMMERLOGENTRY_H_ */




cpp



C++:
#include <time.h>
using namespace std;

void CDimmerLogEntry::setFactor(float factor){

    m_factor = factor;
}

CDimmerLogEntry::CDimmerLogEntry(unsigned int startTime, float factor ){

    if(m_factor >= 0 && m_factor<= 1){

        setFactor(factor);
    }
    else{

        setFactor(1);
    }

    if(startTime > 86400) {
        //dann ist schlecht
        m_startTime = 86400;
    } else {
        m_startTime = startTime/2;
    }
}

unsigned int CDimmerLogEntry::getStartTime() const {
    return m_startTime*2;
}

unsigned int CDimmerLogEntry::getDuration() const {
    return m_duration*2;
}

float CDimmerLogEntry::getFactor() const {
    return m_factor;
}




Was soll ich bei den switchMethoden genau machen ?


C++:
void switchedOffAt(unsigned int offTime){
if(m_secsSinceMidnight < m_startTime){
..... keine Ahnung
}
offTime = m_duration -m_startTime;
}


Dieser Post wurde am 24.05.2018 um 15:50 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
24.05.2018, 15:53 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



C++:
offTime = m_duration - m_startTime;



okay das macht schon mal das erste - jetzt musst du nur


Zitat:

Ist der Wert kleiner als die Einschaltzeit, wird davon ausgegangen, dass der Dimmer am nächsten Tag ausgeschaltet wurde



abfangen.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
24.05.2018, 16:41 Uhr
Power33



Was muss ich denn coden ,damit ich weiss das er abgeschaltet ist ?


if(m_secsSinceMidnight < m_startTime){
..... keine Ahnung
offTime = m_duration - m_startTime; das hier reinbauen ?
}

Echt kompliziert
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
26.05.2018, 15:30 Uhr
Power33



Hat jemand tipps?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: