zurück

C++

G.Eichelsdörfer - Staatliche Technikerschule Weilburg

Lösungsteile zu zü.4 Telefon-Gebührenzähler (2)

Funktion showtime()

Diese Funktion zeigt die Zeit im Format hh:mm:ss an. hh = Stunden zweistellig, mm = Minuten zweistellig, ss = Sekunden zweistellig

showtime() importiert die Zeit in Sekunden.

Eine Implementation dieser Funktion kann mit unterschiedlichen Verfahren erfolgen. Es folgt nur eines dieser möglichen Verfahren.

void showtime(int seconds)
{
  int
    hours = seconds / 3600,           // 1
    min = (seconds % 3600) / 60,      // 2
    sec = seconds % 60;               // 3
  cout
    << (hours<10 ? "0" : "") << hours // 4
    << ':'                            // 5
    << (min<10 ? "0" : "") << min     // 6
    << ':'                            // 7
    << (sec<10 ? "0" : "") << sec;    // 8
}

Beschreibung der Anweisungszeilen

  1. Berechnung der Stunden. Eine Stunde besteht aus 3600 Sekunden.

  2. Berechnung der Minuten. Zuerst werden die Sekunden ermittelt, die nicht in den Stunden enthalten sind (seconds % 3600). Aus diesen Sekunden werden dann die darin enthaltenen Minuten berechnet ( ... / 60).

  3. Schließlich werden die Sekunden berechnet, die weder in den Stunden noch in den Minuten enthalten sind.

  4. Die Stunden werden zweistellig ausgegeben. Dabei wird ein bedingter Ausdruck eingesetzt (hours<10 ? "0" : ""). Wenn hours einstellig ist (kleiner als 10), wird vor hours eine Null ausgegeben, andernfalls wird nichts davor ausgegeben (ein Leerstring).

    Weil ein Zeichen (char) nicht leer sein kann und der Wert des Ausdrucks in beiden Fällen vom gleichen Typ sein muss, müssen hier Strings statt einzelner Zeichen eingesetzt werden. Beide möglichen Ausdruckwerte müssen vom gleichen Typ sein, weil der Compiler sonst nicht "weiß", welchen Ausgabeoperator er aufrufen lassen muss.

  5. Ausgabe des Doppelpunktes.

  6. Die Minuten werden zweistellig ausgegeben. Erklärung des bedingten Ausdrucks wie bei der Stundenausgabe.

  7. Ausgabe des Doppelpunktes.

  8. Die Sekunden werden zweistellig ausgegeben. Erklärung des bedingten Ausdrucks wie bei der Stundenausgabe.

Anregung

Sie mögen diese Funktion einmal etwas anders implementieren, indem Sie statt der bedingten Ausdrücke bedingte Anweisungen (if ...) verwenden.