cplusplus
cplusplus

 

 

Learn how to create a stopwatch program in C++ to track time effectively.

 

Introduction

A stopwatch is a common tool used to measure the amount of time elapsed between two events. In this guide, we will walk you through creating a simple stopwatch program in C++. The program will feature basic functionalities such as start, stop, and reset to measure time. This is an excellent beginner-level project for learning how to work with time and loops in C++.

Objective

The goal of this program is to develop a simple stopwatch in C++ that allows a user to:

  • Start the stopwatch
  • Stop the stopwatch
  • Reset the stopwatch
  • Display elapsed time in seconds

C++ Code for Simple Stopwatch

#include 
#include 
#include 

using namespace std;
using namespace chrono;

class Stopwatch {
private:
    steady_clock::time_point start_time;
    steady_clock::time_point stop_time;
    bool running;

public:
    Stopwatch() : running(false) {}

    void start() {
        if (!running) {
            start_time = steady_clock::now();
            running = true;
            cout << "Stopwatch started...\n";
        }
    }

    void stop() {
        if (running) {
            stop_time = steady_clock::now();
            running = false;
            cout << "Stopwatch stopped.\n";
        }
    }

    void reset() {
        running = false;
        cout << "Stopwatch reset.\n";
    }

    void display() {
        if (running) {
            auto elapsed = duration_cast(steady_clock::now() - start_time);
            cout << "Elapsed Time: " << elapsed.count() << " seconds\n";
        } else {
            auto elapsed = duration_cast(stop_time - start_time);
            cout << "Elapsed Time: " << elapsed.count() << " seconds\n";
        }
    }
};

int main() {
    Stopwatch stopwatch;
    char command;

    cout << "Simple C++ Stopwatch Program\n";
    cout << "Commands: 's' to start, 't' to stop, 'r' to reset, 'd' to display, 'q' to quit\n";

    do {
        cout << "Enter command: "; cin >> command;

        switch(command) {
            case 's':
                stopwatch.start();
                break;
            case 't':
                stopwatch.stop();
                break;
            case 'r':
                stopwatch.reset();
                break;
            case 'd':
                stopwatch.display();
                break;
            case 'q':
                cout << "Exiting stopwatch program.\n";
                break;
            default:
                cout << "Invalid command. Try again.\n";
        }
        this_thread::sleep_for(milliseconds(500)); // Brief delay for better interaction experience
    } while (command != 'q');

    return 0;
}

Program Explanation

This C++ program defines a Stopwatch class with the following methods:

  • start(): Starts the stopwatch by recording the current time using steady_clock::now().
  • stop(): Stops the stopwatch and records the current time again.
  • reset(): Resets the stopwatch, stopping it if it’s running.
  • display(): Displays the elapsed time in seconds, based on whether the stopwatch is running or stopped.

The main() function takes user input for commands:

  • 's': Starts the stopwatch
  • 't': Stops the stopwatch
  • 'r': Resets the stopwatch
  • 'd': Displays the elapsed time
  • 'q': Quits the program

The program runs in a loop, continually waiting for user input until the 'q' command is entered to exit. There’s a small delay of 500 milliseconds between inputs to make the interaction smoother.

How to Run the Program

To run this program, follow these steps:

  1. Open your preferred C++ IDE or a simple text editor.
  2. Copy and paste the provided C++ code into a new file.
  3. Save the file with a .cpp extension (e.g., stopwatch.cpp).
  4. Compile the program using a C++ compiler (e.g., g++ stopwatch.cpp -o stopwatch).
  5. Run the compiled program (e.g., ./stopwatch on Unix systems or stopwatch.exe on Windows).
  6. Use the commands provided in the console to start, stop, reset, and display the stopwatch’s time.

 

© 2025 Learn Programming. All rights reserved.

 

By Aditya Bhuyan

I work as a cloud specialist. In addition to being an architect and SRE specialist, I work as a cloud engineer and developer. I have assisted my clients in converting their antiquated programmes into contemporary microservices that operate on various cloud computing platforms such as AWS, GCP, Azure, or VMware Tanzu, as well as orchestration systems such as Docker Swarm or Kubernetes. For over twenty years, I have been employed in the IT sector as a Java developer, J2EE architect, scrum master, and instructor. I write about Cloud Native and Cloud often. Bangalore, India is where my family and I call home. I maintain my physical and mental fitness by doing a lot of yoga and meditation.

Leave a Reply

Your email address will not be published. Required fields are marked *

error

Enjoy this blog? Please spread the word :)