Get the latest news, exclusives, sport, celebrities, showbiz, politics, business and lifestyle from The VeryTime,Stay informed and read the latest news today from The VeryTime, the definitive source.

How to Write a C++ Program to Simulate a Digital Clock

25
    • 1). Create your files. This program will call for three files: a clock.h header file to define the Clock class, a clock.cpp C++ source file to define the implementation of the Clock class, and finally a simple example program using this class in main.cpp.

    • 2). Define the Clock class. Open the clock.h header file and define the structure of the Clock class by entering the following code into it.

      #ifndef _CLOCK_H
      #define_CLOCK_H

      class Clock {
      public:
      int getHours();
      int getMinutes();
      int getSeconds();

      std::string getTime();

      Clock();
      private:
      };

      #endif/* _CLOCK_H */

      The class has been defined as having four major functions (besides the constructor Clock()). The getHours, getMinutes, and getSeconds functions will each retrieve a different part of the time from the C++ standard time library, using the current system time as its guide. The getTime() function will format these into a standard HH:MM:SS string, as you are used to seeing on digital clocks.

      The ifndef, define, and endif tags are optional; however, it is a good practice to get into using these. When building larger projects, including these tags will ensure that a given header file is loaded into memory only once. This reduces the risk of circular dependency errors, and making a habit of always including them in new header files now will save you many headaches later on down the road.

    • 3). Implement the Clock class. Open your clock.cpp file, and implement all the functions you've defined in your header file by entering the following:

      #include <time.h>
      #include <sstream>
      #include "clock.h"

      Clock::Clock() {
      }

      int Clock::getHours() {
      time_t seconds = time(NULL);
      struct tm *timeinfo = localtime(&seconds);
      return timeinfo->tm_hour;
      }

      int Clock::getMinutes() {
      time_t seconds = time(NULL);
      struct tm *timeinfo = localtime(&seconds);
      return timeinfo->tm_min;

      }

      int Clock::getSeconds() {
      time_t seconds = time(NULL);
      struct tm *timeinfo = localtime(&seconds);
      return timeinfo->tm_sec;

      }

      std::string Clock::getTime() {
      std::string time;
      std::stringstream out;
      out << getHours();
      time = out.str();
      out.str("");
      time += ":";
      out << getMinutes();
      time += out.str();
      out.str("");
      time += ":";
      out << getSeconds();
      time += out.str();
      return time;

      }

      Starting at the top is the constructor, Clock(). This is a very simple class, so there is no need to do anything special here, so the constructor is left empty.

      Next are the getHours, minutes, and seconds functions. These functions retrieve the local time, measured in seconds, GMT, since January of 1970 on most computers, converts it into the tm structure provided by the C++ libraries, and finally retrieves the hours, minutes, and seconds out of this value in a human-readable form.

      Finally, getTime puts these values together in a string with the common format which separates hours, minutes and seconds by colons.

    • 4). Create a simple program to use it. Open your main.cpp file and write the following program into it.

      #include <iostream>
      #include "clock.h"

      int main (int argc, char * const argv[]) {
      Clock *clock = new Clock();
      std::cout << clock->getTime();
      return 0;
      }

      This very simple program creates a new clock object, gets the current system time from it, and outputs it to the standard out. Finally it returns 0 to the operating system, to inform the operating system that the program ran successfully with no errors.

Source...
Subscribe to our newsletter
Sign up here to get the latest news, updates and special offers delivered directly to your inbox.
You can unsubscribe at any time

Leave A Reply

Your email address will not be published.