mikrocontroller.net

Forum: PC-Programmierung C++ Implementierungsproblem


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Kevin L. (Firma: keine) (book33)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen habe gerade ein Problem bei dieser Aufgabe :

Ich verstehe gerade nicht was die bei der Switch Off Methode von mir 
wollen?
/*
 * 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_ */





/*
 * 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;


}









/*
 * 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_ */




/*
 * CDimmerLogEntry.cpp
 *
 *
 *  Created on: 22.05.2018
 *      Author: macbook
 */

#include "CTimeOfDay.h"
#include "CDimmerLogEntry.h"
#include <stdio.h>
#include <cstring>
#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) {
    
    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;
}





Hat jemand eine Idee wie ich die switch off Methoden implementieren 
kann?

Autor: Wilhelm M. (wimalopaan)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Welche Hochschule, welches Semester?

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> Ich verstehe gerade nicht was die bei der Switch Off Methode von mir
> wollen?

Hm. Aus dem Kontext „Dimmer“ geraten eine Methode, die das zu dimmende 
Gerät (vermutlich Lampe) „off switched“ ? Täte ich jetzt mal vermuten...

Oliver

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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).


Nach dem obigen Text hatte ich die Vermutung ,aber mehr weiss ich auch 
nicht .
Studiere im 2 Semester ist nur eine Grundlagen Veranstaltung .
Aber schwer wie ihr sieht .


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

Hatte gedacht ,dass mir hier vielleicht paar schlaue Köpfe helfen 
könnten .

Selbst die Tutoren wussten nicht weiter

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> using namespace std;

https://stackoverflow.com/a/1452738

Kevin L. schrieb:
> unsigned int m_secsSinceMidnight;

Was wenn "unsigned int" auf der Zielplattform 16bit ist und somit zu 
klein für die Sekunden eines Tages (86400)? Nimm lieber uint32_t, dann 
weißt du dass es groß genug ist. Gleiches gilt für die 100 anderen 
Stellen im Code wo du die ungewissen Integer-Typen nutzt.

Kevin L. schrieb:
> sscanf(timeOfDay.c_str(), "%02u:%02u:%02u", &hours, &minutes,
> &seconds);

Waurm scanf und nicht std::cin ?

Kevin L. schrieb:
> std::string CTimeOfDay::intToString(unsigned int value) {
Warum nicht std::to_string ?

Überleg doch einfach mal:
Wenn die Ein-Schaltzeit früher als die Aus-schaltzeit ist, wird erst 
eingeschaltet und später am selben Tag wieder ausgeschaltet. Um 
Mitternacht ist es aus.
Wenn Die Aus-Schaltzeit vor der Einschaltzeit ist, soll wohl über 
Mitternacht die Lampe an bleiben und am nächsten Tag abgeschaltet 
werden. Also z.B. um 14:00 ein und am nächsten Tag um 05:00 aus. 
Schaffst du es daraus zu berechnen wie lang die Zeit dazwischen ist? 
Wenn nicht, zurück in die 6. Klasse.

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok ich versuche es mal.

Aber Dr Sommer die Bezeichnungen unsigned int usw war uns so im Header 
vorgegeben und daran sollen wir uns auch halten .

Das ist eine Altklausur und die wollen das man sich an die vorgegebene 
Header hält

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> Aber Dr Sommer die Bezeichnungen unsigned int usw war uns so im Header
> vorgegeben und daran sollen wir uns auch halten .

Dann erkläre deinem Prof dass das so problematisch ist und er euch 
beibringen soll, wie man guten Code schreibt.

Kevin L. schrieb:
> Das ist eine Altklausur und die wollen das man sich an die vorgegebene
> Header hält

Typisch Hochschule... Man lernt es irgendwie zum Ergebnis zu kommen aber 
auf die Details wird nicht geachtet.

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn die Ein-Schaltzeit früher als die Aus-schaltzeit ist, wird erst
eingeschaltet und später am selben Tag wieder ausgeschaltet. Um
Mitternacht ist es aus.

if(m_startTime < m_secsSinceMidnight){
offTime = m_duration -m_startTime;

}

Oder soll ich 24h -startTime machen ?

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendjemand noch da ?
Oder war die frage so doof?

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> Oder war die frage so doof?

Ziemlich. Nimm eine Analoge Uhr, dreh an den Zeigern und zähl die 
Stunden...

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
24 h - startzeit oder ?

Oder auch dumm?

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
12:00 ein ... 20:00 aus -> 8h
20:00 ein ... 12:00 aus -> -8h (wegen -) + 24h -> 16h

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich verstehe noch nicht ganz die Logik glaub ich :
Im Header steht:
 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).
   */

Wieso wird bei einer EInschaltzeit um 22 Uhr um 1 ausgeschaltet ?

Ich dachte ,dass die Logik ist ,das jeweils um 24 Uhr abgeschaltet wird 
oder ?
12:00 ein ... 20:00 aus -> 8h
20:00 ein ... 12:00 aus -> -8h (wegen -) + 24h -> 16h

Und warum soll es um 20Uhr aus gehen ?
Das verstehe ich nicht?

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Dr. Sommer schrieb:
> Kevin L. schrieb:
>> using namespace std;
>
> https://stackoverflow.com/a/1452738
>
> Kevin L. schrieb:
>> unsigned int m_secsSinceMidnight;
>
> Was wenn "unsigned int" auf der Zielplattform 16bit ist und somit zu
> klein für die Sekunden eines Tages (86400)? Nimm lieber uint32_t, dann
> weißt du dass es groß genug ist.

Es gibt keinen Grund, den Typ hart auf 32 Bit festzunageln. Das sollte 
man nur tun, wenn es essenziell ist, dass die Variable exakt 32 Bit groß 
ist.

Dr. Sommer schrieb:
> Kevin L. schrieb:
>> Aber Dr Sommer die Bezeichnungen unsigned int usw war uns so im Header
>> vorgegeben und daran sollen wir uns auch halten .
>
> Dann erkläre deinem Prof dass das so problematisch ist und er euch
> beibringen soll, wie man guten Code schreibt.

Meist will derjenige sowas nicht hören. Er hat vermutlich noch nie 
Embedded-Software entwickelt und geht daher davon aus, dass Systeme, wo 
int 16 Bit breit ist, nur noch im Museum zu finden sind - wenn er denn 
überhaupt weiß, dass es sowas gibt.

> Kevin L. schrieb:
>> Das ist eine Altklausur und die wollen das man sich an die vorgegebene
>> Header hält
>
> Typisch Hochschule... Man lernt es irgendwie zum Ergebnis zu kommen aber
> auf die Details wird nicht geachtet.

Naja, ich finde den Code allgemein eher unschön. Allerdings habe ich von 
Professoren auch während meines Studiums auch nie was besseres gesehen. 
Ich war froh, dass ich es schon vorher konnte und in den Prüfungen nur 
immer das hinschreiben musste, was zwar nicht sinnvoll war, aber dem 
entsprach, was der Prof sehen wollte. Ich will mir gar nicht ausmalen, 
was passiert wäre, wenn ich über diese Vorlesungen das Programmieren 
erst gelernt hätte.

: Bearbeitet durch User
Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf M. schrieb:
> Es gibt keinen Grund, den Typ hart auf 32 Bit festzunageln

Ja, man kann auch uint_least32_t nehmen. Allerdings ist es keine lokale 
Variable, sodass Speicher sparen eine Rolle spielen könnte. Gerade so 
ein Datentyp könnte in größeren Mengen auftreten.

Rolf M. schrieb:
> Allerdings habe ich von Professoren auch während meines Studiums auch
> nie was besseres gesehen.

Tja. Wenn man schon Leute fragt die sich wirklich auskennen darf man 
dann auch Verbesserungen übernehmen.
In dem C-Übungen an meiner Hochschule (C++ ist optional) sind auch immer 
Fehler. Juckt aber keinen.

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> Ich verstehe noch nicht ganz die Logik glaub ich :
> Im Header steht:
>  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).
>    */
>
> Wieso wird bei einer EInschaltzeit um 22 Uhr um 1 ausgeschaltet ?
>
> Ich dachte ,dass die Logik ist ,das jeweils um 24 Uhr abgeschaltet wird
> oder ?
> 12:00 ein ... 20:00 aus -> 8h
> 20:00 ein ... 12:00 aus -> -8h (wegen -) + 24h -> 16h
>
> Und warum soll es um 20Uhr aus gehen ?
> Das verstehe ich nicht?

Das sind einfach Beispielwerte für die beiden Fälle:
 - war um Mitternacht aus, wurde tageüber ein und wieder ausgeschaltet
 - war um Mitternacht ein, wurde tageüber aus und wieder eingeschaltet

Ich hab die Sortierung der Zeiten mit Absicht so gewählt, denn sie 
stehen ja in zwei Variablen: Einschaltzeit/Ausschaltzeit
Wenn "aus - ein" negativ wird, dann liegt der 2.Fall vor, was auch 
bedeutet: man hat die "negative Aus-Zeit" errechnet.
Und wenn von 24h 8h "aus" war, dann reicht ganz kleine Mathematik um auf 
die "ein"-Zeit zu kommen.

Wenn ich bedenke wie ich mich bei TI-Studium mit Mathe gequält hab und 
dann sehe, wie wenig aus solchen Fächern dann in die 
"Problem-Lösungs-Gehirne" übergeht, dann komm ich ins Grübeln ;-)

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if(m_startTime < offTime){
m_duratiom = offTime - m_startTime;
}

if(m_startTime > offTime){
offTime = m_duration -m_startTime;
}

Bei der 2ten Bedingung nich sicher ?

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ANsatz richtig ?

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin schrieb:
> offTime = m_duration -m_startTime;

Wieso änderst du den Parameter? Sollst du nicht m_duration errechnen?!

Kevin L. schrieb:
> ANsatz richtig ?
Ist dir schonmal in den Sinn gekommen... es einfach auszuprobieren?

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
if(m_startTime < offTime){
m_duratiom = offTime - m_startTime;
}

if(m_startTime > offTime){
m_duration = m_startTime - offTime;
}

Ich glaube jetzt habe ich es .

Soll man einfach wenn StartTime grösser ist einfach umgekehrt 
subtrahieren oder ?

Was wollen die jetzt bei der SwitchoffAT Methode von mir ?

Ich hoffe mal ,dass jetzt mein oberer Weg stimmt

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> Ich hoffe mal ,dass jetzt mein oberer Weg stimmt

Probier es doch einfach mal aus! Angenommen m_startTime ist 05:00 und 
offTime ist 04:00. Wie lange ist die Lampe dann an? Was erhältst du bei 
"m_startTime - offTime" - also "05:00-04:00" - als Ergebnis?

Autor: KevinLL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
5-4 = 1

1 ist die Einschaltzeit also richtig .

Puuh schwere Geburt.

Eine Verwirrung herrscht bei mir noch ,dass war dann
void switchedOffAt(unsigned int offTime)
{

if(m_startTime < offTime){
m_duratiom = offTime - m_startTime;
}

if(m_startTime > offTime){
m_duration = m_startTime - offTime;
}

Was soll man jetzt genau bei switch off machen ?

In der AUfgabe steht die switchoffAt mit der aktuellen Zeit aufrufen?

Die aktuelle Zeit ist doch in der Methode As Time ?

Oder meinen die die EInschaltzeit von dieser Methode void 
switchedOffAt(unsigned int offTime)?


Die Aufgabe ist so verwirrend , sind auch viele Leute durchgefallen

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
KevinLL schrieb:
> 5-4 = 1
>
> 1 ist die Einschaltzeit also richtig .

D.h. wenn du heute um 05:00 einschaltest und morgen um 04:00 abschaltest 
war die Lampe 1h an? Ganz sicher?

KevinLL schrieb:
> Die Aufgabe ist so verwirrend , sind auch viele Leute durchgefallen
Ist eine Baumschule, ja?

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D.h. wenn du heute um 05:00 einschaltest und morgen um 04:00 abschaltest
war die Lampe 1h an? Ganz sicher?

nein . Mist . Haut nicht hin.

Ich muss die insgesamte Einschaltzeit - die Auschaltzeit rechnen :

In welcher Variable ist die EInschaltzeit ?

In duration oder ?


..... = m_duration - offTime;

Eine Variable für die rechte Seite erstellen wo man das speichert ?
unsigned int tmp = 0;


void switchedOffAt(unsigned int offTime)
{
unsigned int tmp = 0;

if(m_startTime < offTime){

tmp = m_duration - offTime;

}

Langsam bin ich auch am Ende mit meinen Nerven .

Hoffe das das kein Blödsinn ist

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> Hoffe das das kein Blödsinn ist

Doch.

Kevin L. schrieb:
> Ich muss die insgesamte Einschaltzeit - die Auschaltzeit rechnen :
>
> In welcher Variable ist die EInschaltzeit ?
>
> In duration oder ?
Aber die gesamte Einschaltzeit willst du doch berechnen...

Kevin L. schrieb:
> Langsam bin ich auch am Ende mit meinen Nerven .

Ich weiß auch nicht mehr wie man dir helfen soll, außer die komplett 
fertige Lösung zu zeigen. Vielleicht ist es besser wenn du durchfällst 
und dann was ohne Zahlen und abstrakte Dinge studierst...

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich bin nicht bereit aufzugeben .
Der nächste Versuch .
Ich will nur bestehen leute . Mehr nicht .
void switchedOffAt(unsigned int offTime)
{


if(m_startTime < offTime){

m_duration = m_startTime - offTime;

}

Soll ich irgendwie diesen factor noch in der Rechnung berücksichtigen 
Leute ?
Aber danke Dr sommer ,dass du noch dabei bist

: Bearbeitet durch User
Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dr sommer noch da ? Oder bist du auch weg ?

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab's aufgegeben. Ohne das geringste Verständnis deinerseits ist es 
vergeblich. Durch das Servieren fertiger Lösungen lernst du auch nicht 
wie man die Prüfung besteht.

Autor: Eric B. (beric)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Funktion heisst doch switchedOff(): switch ed! Dat deutet eher auf 
eine Abfrage hin (wann wurde die Lampe ausgeschaltet) als auf einen 
Aktion (schalte die Lampe aus).

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau. Deswegen steht auch im Kommentar dass sie etwas festlegt und 
deswegen hat die auch keinen Rückgabewert. Die ist einfach nur mies 
benannt (Professoren können meist kein Englisch).

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void switchedOff()
{


if(m_startTime < offTime){

m_duration = m_startTime - offTime;

}
if(m_startTime >offTime){

m_duration = -1*(m_startTime - offTime);

}

}


Besser?

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> Besser?

Ich zitiere mich sehr gerne selbst:

Dr. Sommer schrieb:
> Probier es doch einfach mal aus! Angenommen m_startTime ist 05:00 und
> offTime ist 04:00. Wie lange ist die Lampe dann an? Was erhältst du bei
> "-(m_startTime - offTime)" - also "-1 * (05:00-04:00)" - als Ergebnis?

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau. Deswegen steht auch im Kommentar dass sie etwas festlegt und
deswegen hat die auch keinen Rückgabewert. Die ist einfach nur mies
benannt (Professoren können meist kein Englisch).


Hahah

Ich hatte die ganze Zeit gedacht ,dass ihr meintet ,dass man das bei 
switchoffat implementieren sollte

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void switchedOff()
{


if(m_startTime < offTime){

offTime = m_duration - m_startTime;

}
if(m_startTime >offTime){

offTime = -1*(m_duration - m_startTime);


}

}

Ich würde es eigentlich so machen ?

Bei switched off muss man doch die Ausschaltzeit berechnen ?

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> offTime = m_duration - m_startTime;

Dr. Sommer schrieb:
> Aber die gesamte Einschaltzeit willst du doch berechnen...

Dr. Sommer schrieb:
> Wieso änderst du den Parameter? Sollst du nicht m_duration errechnen?!

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh nein .
Verzweifle langsam.
Gut jetzt ist mir wenigstens klar das duration gefragt ist :


Ich glaube jetzt habe ich es wirklich :

void switchedOff()
{


if(m_startTime < offTime){

 m_duration = offTime- m_startTime;

}
if(m_startTime >offTime){

m_duration = -1*(offTime -m_startTime);


}

}

Passt oder ?

8Uhr aus - 1 Uhr ein = 7 Uhr einschaltzeit

Richtig ?

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> 8Uhr aus - 1 Uhr ein = 7 Uhr einschaltzeit
>
> Richtig ?

Nur für den 1. Fall. Was wenn um 8 Uhr ein und um 1 Uhr des nächsten 
Tages aus?

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void switchedOff()
{


if(m_startTime < offTime){

 m_duration = offTime- m_startTime;

}
if(m_startTime >offTime){

m_duration = -1*(m_secsSinceMidnight -m_startTime);


}

}

Bin mir nicht sicher für den 2 Fall ?

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder jetzt wieder falsch?

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void switchedOff()
{


if(m_startTime < offTime){

 m_duration = offTime- m_startTime;

}
if(m_startTime >offTime){

m_duration = -1*(-offTime +m_startTime)+24;


}

}


Jetzt ok?

: Bearbeitet durch User
Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder immer noch Fehler?

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was spricht gegen Ausprobieren?

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach dem Ausprobieren stimmt es .

Was mache ich jetzt mit der switchoffAt?
Was wollen die dort ?

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void CDimmerLogEntry::switchedOff()
{

unsigned int offTime;

if(m_startTime < offTime){

 m_duration = offTime- m_startTime;

}
if(m_startTime >offTime){

m_duration = -1*(-offTime +m_startTime)+24;


}

}


void CDimmerLogEntry::switchedOffAt(unsigned int offTime){


  offTime = -1*(m_startTime-24);

Hätte man die Methoden nicht andersherum implementiert müssen ?
In der Aufgabe steht doch:

Insbesondere sollte z. B. die switchedOff-Methode einfach die 
switchedOffAt-Methode mit der aktuellen Zeit aufrufen.)}


Würde so die beiden Methoden passen?

Bei switched off musste ich unsigned int offTime definieren ,da sonst 
der Compiler(Eclipse Fehler angezeigt hat?

: Bearbeitet durch User
Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch jemand on?

Oder ist meine Lösung wieder Katastrophe?

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jemand da ?

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> Oder ist meine Lösung wieder Katastrophe?

Ist sie.

Aufgabenstellung lesen, und so lange drüber nachdenken, bis du 
verstanden hast, WAS die Funktion eigentlich machen soll. Das hat 
überhaupt nichts mit C oder C++ oder programmieren zu tun, da geht es 
schlicht um Textverständnis. Und da solltest du Wort für Wort vorgehen.

Wenn du dann das WAS komplett verstanden hast, kommt das WIE. Das ist 
dann allerdings einfach.

Kevin L. schrieb:
> /**
>    * 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);

Oliver

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso und wenn der Wert größer als die Einschaltzeit ist , soll man das 
dann in switchoffAt implementieren ?

Ich sage ja auch nicht dass ich eine Lösung will , da ihr 
erfahrungsgemäß die nicht gerne geben möchtet .

Ich wollte ja nur wissen was man bei der switchoffAt und was bei der 
Switch off machen soll ?

Ich übe ja nur an der Aufgabe , muss sie ja nicht abgeben

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin schrieb:
> Achso und wenn der Wert größer als die Einschaltzeit ist , soll man das
> dann in switchoffAt implementieren ?

Nur wenn es Nachts kälter als draussen ist.

Lesen und verstehen ist macnhmal schwierig. Wobei zugegebenermaßen der 
Aufgabensteller weder im Deutschen noch im Englischen Perfekt und Futur 
auseinanderhalten kann.

Das ist wohl der eigentliche Lerneffekt der Übung: Herausfinden, was der 
Kunde eigentlich wirklich will.

Oliver

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
HAHAH hast irgendwie Recht aber da wir hier beim üben sind kannst du mir 
wenigsten sagen was die bei den beiden Methoden wollen ?

Sonst könnte ich ja noch weitere 100 Nachrichten schreiben

Autor: Wilhelm M. (wimalopaan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte oben mal gefragt, welche HS und welches Semester.

Die HS hast Du (verständlicherweise) verschwiegen, aber Du bist im 2 
Fachsemester.

Mich würde mal interessieren:

1) Ist das eine spezielle C++ Veranstaltung?
2) Welchen Umfang hat die (in ECTS oder SWS) in VL/Ü/S ?
3) Welche erste Programmiersprache habt ihr gelernet (Java?)
4) Habt Ihr schon so etwas wie OOA oder OOD gelernt? Oder findet das 
gerade statt.
5) Wieviel Mathematik (ECTS/SWS) habt ihr bislang bzw. aktuell.
6) Ist der Unterricht in Deutsch oder Englisch?

Danke!

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Und: Welches Studienfach ist es? Informatik sollte man mit dem 
Abstraktionsvermögen, Text-und Zahlenverständnis nicht studieren...

Autor: Wilhelm M. (wimalopaan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und Du schreibst: " ... selbst die Tutoren wussten nicht weiter."


Dazu noch die Frage:

- Wollten oder konnten Sie nicht? Welchen Eindruck hattest Du?

- Wie groß in Teilnehmern sind Eure Übungs-/Pratika-Gruppen?

Bitte keine Angst: das soll nicht gegen Dich verwendet werden, ich 
möchte einfach nur mal einen Eindruck gewinnen. Deswegen würde ich mich 
über eine Antwort freuen.

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt kaum Übungen .
Es werden nur PowerPoint Folien abgelesen .

Das ist die erste also Einführung in Programmierung .

Gerne würde ich mich auch für paar Hilfestellungen freuen ?

Danke

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jungs seid ihr noch da ?

Will die Methode endlich fertig haben .

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin schrieb:
> HAHAH hast irgendwie Recht aber da wir hier beim üben sind kannst du mir
> wenigsten sagen was die bei den beiden Methoden wollen ?

Wir sind hier nicht beim üben, nur du. Also musst du da durch, nicht 
wir.

Und eigentich ist die ganze Sache super einfach. Mit etwas überlegen 
kommst du auch drauf.

Also probiers nochmal. Nicht irgend einen Code programmieren, sondern 
erst einmal aufschreiben, was die beiden Funktionen genau machen sollen, 
in deinen eigenen Worten.

Oliver

Autor: Istdochso (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
60€/h schreib ich dir was du möchtest

Autor: Wilhelm M. (wimalopaan)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Kevin schrieb:
> Es gibt kaum Übungen .
> Es werden nur PowerPoint Folien abgelesen .
>
> Das ist die erste also Einführung in Programmierung .

Ok, im 2. Semester, "Einf. in die Programmierung"

Das kann also kein Informatikstudiengang sein, oder?

Meine Einschätzung:
Hochschule:
Einführungsveranstaltung für Nebenfachstudenten mit C++: schlecht, 
schlechte Vorlesung (nur ppt), wenig Praktika, schlechte Tutoren.

Student:
Scheint nicht in der Lage, ein Kochrezept aufzuschreiben, wie "wenn x, 
dann y".

Zwar hat die Hochschule ein schlechtes Konzept und eine katastrophale 
Umsetzung, aber der Student ist leider nicht besser. Nun, das ist eine 
üble Paarung.

Kevin: wir können/wollen/dürfen Dir nicht helfen. Besser scheiterst Du 
jetzt im 2. Semester als später. Parallel solltest Du darüber 
nachdenken, ob Deine Einstellung und Deine Voraussetzungen Dich zum 
Studium überhaupt befähigen. Ggf. sattelst Du besser um auf eine 
Ausbildung.

: Bearbeitet durch User
Autor: Kevin (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Schon harte Worte , dass man die Hilfe im Forum einfach verneint .

Autor: Wilhelm M. (wimalopaan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin schrieb:
> Schon harte Worte , dass man die Hilfe im Forum einfach verneint .

Vielleicht helfen Dir ja andere weiter hier, doch ich halte es nach den 
obigen zahlreichen Posts für falsch.

Deine Ansprechpartner sind: Deine Lerngruppe, Deine Tutoren und Deine 
Profs. In dieser Reihenfolge.

Autor: Sven A. (quotschmacher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin schrieb:
> Schon harte Worte , dass man die Hilfe im Forum einfach verneint .

tatsächlich war es sehr gut erklärt und nicht einfach verneint. aber 
jetzt mal mal ganz ehrlich: wenn da steht, die switchedoff-methode soll 
die switchedoffat methode aufrufen und die kommentare auch noch so schön 
sind...

>  /**
>   * Legt die Ausschaltzeit des Dimmers und damit die
>   * Einschaltdauer fest.
>   ...
>   */
>  void switchedOffAt(unsigned int offTime);
>  /**
>   * Legt die aktuelle Zeit als Ausschaltzeitpunkt fest.
>   */
>  void switchedOff();

wo ist denn dann das problem, die switchedoff methode einfach nur ganz 
doof die switchedoffat-methode mit der aktuellen zeit aufzurufen und in 
der switchedoffat diese zeit zu loggen und ne dauer zu errechnen?

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void CDimmerLogEntry::switchedOff()
{

unsigned int offTime;

if(m_startTime < offTime){

 m_duration = offTime- m_startTime;

}
if(m_startTime >offTime){

m_duration = -1*(-offTime +m_startTime)+24;


}

}


void CDimmerLogEntry::switchedOffAt(unsigned int offTime){


   CDimmerLogEntry::switchedOff(CTimeOfDay::asTime();); Fehler leider
}

Beitrag #5447220 wurde vom Autor gelöscht.
Autor: Sven A. (quotschmacher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
echt? der compiler sagt einfach nur "fehler"? meine compiler sagen mir 
immer noch, was sie für falsch halten / was falsch ist. ist es 
vielleicht das semikolon in der parameterliste des funktionsufrufs? und 
wenn das weg ist - ist es dann der falsche datentyp? überlegt du 
tatsächlich was du da tust oder schreibst du nur irgendwas hin?

Autor: Dr. Sommer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> m_duration = -1*(-offTime +m_startTime)+24;

Wunderschön. Und da bist du ganz ohne Hilfe drauf gekommen? Und war die 
Zeitangabe nicht in Sekunden statt in Stunden? Hast du in der Schule 
nicht die Grundregeln der Arithmetik gelernt (Distributivgesetz, 
Assoziativgesetz, Kommutativgesetz) um das ein bisschen übersichtlicher 
zu schreiben?

Autor: Sven A. (quotschmacher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gibt doch sogar schon "int operator-(CTimeOfDay rhs);" als fertgen 
operator...

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver S. schrieb:
> Also probiers nochmal. Nicht irgend einen Code programmieren, sondern
> erst einmal aufschreiben, was die beiden Funktionen genau machen sollen,
> in deinen eigenen Worten.

Gilt immer noch. Ansonsten bleibt alles, was du da als Code hinrotzt, 
sinnloser Blödsinn.

Oliver

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void CDimmerLogEntry::switchedOff()
{

unsigned int offTime;

if(m_startTime < offTime){

 m_duration = offTime- m_startTime;
 m_duration = m_duration/24;

}
if(m_startTime >offTime){

m_duration = -1*(-offTime +m_startTime)+3600;
m_duration = m_duration/24;


}

}


void CDimmerLogEntry::switchedOffAt(unsigned int offTime){

CTimeOfDay();
   CDimmerLogEntry::switchedOff();
}

In h umgerechnet jetzt ?

Weiter irgendwie keine Ideen mehr?

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oliver S. schrieb:
> Oliver S. schrieb:
>> Also probiers nochmal. Nicht irgend einen Code programmieren, sondern
>> erst einmal aufschreiben, was die beiden Funktionen genau machen sollen,
>> in deinen eigenen Worten.
>
> Gilt immer noch. Ansonsten bleibt alles, was du da als Code hinrotzt,
> sinnloser Blödsinn

Oliver

Autor: Kevin L. (Firma: keine) (book33)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das frage ich doch schon seit 100 nachrichten was bei den Methoden 
gemacht werden soll?

Daher hatte ich die frage auch im Forum gepostet

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> void CDimmerLogEntry::switchedOff()
> {
>
> unsigned int offTime;
>
> if(m_startTime < offTime){
>
>  m_duration = offTime- m_startTime;
>  m_duration = m_duration/24;
>
> }
> if(m_startTime >offTime){
>
> m_duration = -1*(-offTime +m_startTime)+3600;
> m_duration = m_duration/24;
>
>
> }
>
> }
>
.
> void CDimmerLogEntry::switchedOffAt(unsigned int offTime){
>
> CTimeOfDay();
>    CDimmerLogEntry::switchedOff();
> }
>
> In h umgerechnet jetzt ?
>
> Weiter irgendwie keine Ideen mehr?

Programmieren geht so, daß man ein großes Problem in mehrere kleine 
zerlegt und am Ende mit kleinen Schritten löst.
Bei Verstehen von fremdem Code kann man umgekehrt vorgehen und kleine 
Teile zu verstehen versuchen und dieses Verständnis dann auch 
hinschreiben (Kommentar), bis sich ein "rundes"Gesammtbild ergibt.

BTW, Studium bedeutet vorgelegte Fakten auswendig aufsagen zu können, 
sondern sich Techniken anzueignen, um bisher unbekanntes ergründen zu 
können.

BTW2, was da passiert haben schon mehrere auf verschiedene Art 
rüberzubringen versucht. Offenbar fruchtet aber nur die ausformulierte 
Lösung.

: Bearbeitet durch User
Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja aber was ist an meinem Ansatz richtig oder was falsch ?

Oder wenigstens paar Tipps geben ?
Meine Ansätze habe ich doch gepostet

Autor: Oliver S. (oliverso)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falsch ist ungefähr alles. Im Ganzen und auch im Detail.

Und solange du nicht mal willig bist, die Aufgabestellung zu verstehen, 
wird das auch nicht besser.

Oliver

Autor: Sven A. (quotschmacher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> void CDimmerLogEntry::switchedOffAt(unsigned int offTime){
>
> CTimeOfDay();
>    CDimmerLogEntry::switchedOff();
> }

die aufgabenstellung sagt, die switchedoff-method könne die 
switchedoffat-methode aufrufen. was tust du da?

jetzt erst überlegen und dann die nächste zeile lesen:
du machst es genau andersrum.

schreibe doch erstmal als text auf, was DU DENKST, was da passieren 
soll. in code kann man das ganze immernoch giessen

Autor: bla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kevin L. schrieb:
> unsigned int offTime;
>
> if(m_startTime < offTime){
>
>  m_duration = offTime- m_startTime;
>  m_duration = m_duration/24;
>
> }
> if(m_startTime >offTime){
>
> m_duration = -1*(-offTime +m_startTime)+3600;
> m_duration = m_duration/24;
>
> }

Also erstmal kann es sich durchaus in vielerlei hinsicht (eigenes und 
fremdes Verständnis, Optimierung etc.) lohnen, auch mal ein "else" zu 
verwenden.
Und dann stellt sich natürlich auch gleich mal die Frage:
Was ist denn, wenn m_startTime gleich offTime ist?

Dann definierst du da direkt über der Verwendung die Variable offTime, 
weist ihr aber keinen Wert zu, ich bin jetzt kein C++ Programmierer, 
aber sollte sowas nicht mindestens ne Compilerwarnung ausspucken?

Isoliere doch einfach mal das allernötigste, sprich:
Schreibe ausschliesslich die fragliche Methode (switchedOff) und dazu 
eine main-Methode (sonst weiter nix) in der du eben alle nötigen 
Parameter in allen erdenklichen Kombinationen durchexerzierst und 
jedesmal dazu switchedOff aufrufst, und schaust, ob das Ergebnis zur 
Aufgabe passt.
Dieses Ministück Code sollte natürlich fehlerfrei und compilierbar (!) 
sein, wenn du es hier dann für weitere Fragen ablieferst.

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void CDimmerLogEntry::switchedOff()
{
CTimeofDay();
CDimmerLogEntry::switchedoffAt();

}

Bei der 2 Methode :

void CDimmerLogEntry::switchedOffAt()
{

if(m_startTime < offTime){
m_duration = offTime- m_startTime;
m_duration = m_duration/24;
}
if(m_startTime >offTime){
m_duration = -1*(-offTime +m_startTime)+3600;
m_duration = m_duration/24;
}
Of(m_startTime == offTime){

cout << m_startTime << endl;


}

Was sagt ihr hierzu ?

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void CDimmerLogEntry::switchedOff()
{
CTimeofDay();
CDimmerLogEntry::switchedoffAt();
}
Bei der 2 Methode :
void CDimmerLogEntry::switchedOffAt(unsigned int offTime)
{
if(m_startTime < offTime){
m_duration = offTime- m_startTime;
m_duration = m_duration/24;
}
if(m_startTime >offTime){
m_duration = -1*(-offTime +m_startTime)+3600;
m_duration = m_duration/24;
}
Of(m_startTime == offTime){
cout << m_startTime << endl;
}
Was sagt ihr hierzu ?

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void CDimmerLogEntry::switchedOff()
{
CTimeofDay();
CDimmerLogEntry::switchedoffAt();
}
Bei der 2 Methode :
void CDimmerLogEntry::switchedOffAt(unsigned int offTime)
{
if(m_startTime < offTime){
m_duration = offTime- m_startTime;
m_duration = m_duration/24;
}
if(m_startTime >offTime){
m_duration = -1*(-offTime +m_startTime)+3600;
m_duration = m_duration/24;
}
Of(m_startTime == offTime){
cout << m_startTime << endl;
}
Was sagt ihr hierzu ?

Habe den obigen Teil nochmal korrigiert

Autor: Sven A. (quotschmacher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven A. schrieb:
> Kevin L. schrieb:
>> void CDimmerLogEntry::switchedOffAt(unsigned int offTime){
>>
>> CTimeOfDay();
>>    CDimmerLogEntry::switchedOff();
>> }
>
> die aufgabenstellung sagt, die switchedoff-method könne die
> switchedoffat-methode aufrufen. was tust du da?

immer noch das selbe problem... und was erhoffst dud ir, bringt in der 
3. zeile "CTimeofDay();"? was soll das bringen - also was hast du damit 
vor und was macht es denn wirklich?

die andere methode habe ich mir nicht angeguckt
aber ich würde mal knallhart behaupten, du hast das ganze noch nichtmal 
versucht irgendwie zu kompilieren -> "Of(m_startTime == offTime){"

: Bearbeitet durch User
Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven A. schrieb:
> Sven A. schrieb:
>> Kevin L. schrieb:
>>> void CDimmerLogEntry::switchedOffAt(unsigned int offTime){
>>>
>>> CTimeOfDay();
>>>    CDimmerLogEntry::switchedOff();
>>> }
>>
>> die aufgabenstellung sagt, die switchedoff-method könne die
>> switchedoffat-methode aufrufen. was tust du da?
>
> immer noch das selbe problem... und was erhoffst dud ir, bringt in der
> 3. zeile "CTimeofDay();"? was soll das bringen - also was hast du damit
> vor und was macht es denn wirklich?
>
> die andere methode habe ich mir nicht angeguckt
> aber ich würde mal knallhart behaupten, du hast das ganze noch nichtmal
> versucht irgendwie zu kompilieren -> "Of(m_startTime == offTime){"

Er benutzt das Verfahren "Schiffe versenken". So wie jedes je 
geschriebene Buch in Pi zu finden ist, muß das Durchpermutieren aller 
Variablen und Schlüsselwort zur Lösung führen, oder nicht?
Schade, wenn man bei diesem Ansatz die richtige Lösung nicht erkennen 
kann (warum nur?) und wieder andere fragen muß.

Autor: Dieter F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Carl D. schrieb:
> Er benutzt das Verfahren "Schiffe versenken". So wie jedes je
> geschriebene Buch in Pi zu finden ist, muß das Durchpermutieren aller
> Variablen und Schlüsselwort zur Lösung führen, oder nicht?

Alles eine Frage der Zeit - wie bei den Affen, welche die Bibel 
schreiben :-)

Autor: Carl D. (jcw2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dieter F. schrieb:
> Carl D. schrieb:
>> Er benutzt das Verfahren "Schiffe versenken". So wie jedes je
>> geschriebene Buch in Pi zu finden ist, muß das Durchpermutieren aller
>> Variablen und Schlüsselwort zur Lösung führen, oder nicht?
>
> Alles eine Frage der Zeit - wie bei den Affen, welche die Bibel
> schreiben :-)

Auch die brauchen jemanden, der ihnen irgendwie die Zielerreichung 
mitteilt.

Autor: Dieter F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Carl D. schrieb:
> Auch die brauchen jemanden, der ihnen irgendwie die Zielerreichung
> mitteilt.

Bei Jahr-Millionen  -Milliarden  ... ist das relativ :-)

Autor: Sven A. (quotschmacher)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und? gibt's hier jetzt schon was neues?

Autor: Kevin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Leider nicht .
Ich bin leider immer noch nicht auf die Lösung gekommen .

Hab es jetzt irgendwie aufgegeben .
Wenn jemand Lust hat kann er ja noch paar Tipps geben .

Ansonsten Danke

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.