DEV Community

salieu Gbla
salieu Gbla

Posted on

Create stopwatch with C++

cpp

beginners

tutorial

showdev
C++ is a great language but to make something using it is a bit difficult. But that doesn't mean you can't do anything with it. You can create small console based applications and that's what we are going to do. I will show you how to create a simple stopwatch with C++.

I got this idea from my javascript stopwatch project and thought how can I create something like that in C++. So let's see how to do it !!

Requirements
C++ compiler (or you can use any online platform. My recommendation is: Repl.it)
Text editor
Some knowledge of C++
Step 1: Write the base code
We will start by writing the base code for our console application.

Create a folder and give it a name. e.g. cpp-stopwatch
Create a file named stopwatch.cpp in that folder.
// stopwatch.cpp

include

using namespace std;

int main() {
cout << "stopwatch" << endl;
}
To compile and run this code, open your terminal or command prompt and navigate to that folder and run the following commands

compile

g++ stopwatch.cpp -o stopwatch

run

./stopwatch
Use these commands every time you make changes to your C++ file.

Step 2: Displaying our stopwatch
First we will start by displaying our stopwatch in console before adding functionality to it. For that we will create necessary variables and a function named displayTime to display our stopwatch.
// stopwatch.cpp

include

using namespace std;

void displayTime(int hours, int minutes, int seconds) {
cout << hours << ":"
<< minutes << ":"
<< seconds << endl;
}

int main() {
int hour = 0;
int min = 0;
int sec = 0;

displayTime(hour, min, sec);

}
Step 3: Stopwatch functionality !!
Now the interesting part, functioning of stopwatch. If you are familiar with javascript, you already know that there is a built-in function setInterval that runs the code after the specified interval. But how can we do that thing in C++ ??

In C++ we can use a function called sleep which is available in the header unistd.h in linux and windows.h in windows.

Sleep function takes number of seconds and stops the code for the specified duration.

include

include // in linux: sleep()

// #include // in windows: Sleep()

using namespace std;

int main() {
cout << "wait for 5 seconds !" << endl;
sleep(5);
cout << "5 seconds passed away !" << endl;
}
So, we have a way to stop our code but we need a way to increment number of seconds continuously. For that we will use LOOOOOP.

include

include // in linux: sleep()

// #include // in windows: Sleep()

using namespace std;

int main() {
int hour = 0;
int min = 0;
int sec = 0;

// run the stopwatch continuously
while(true) {
sleep(1);
sec++;

  cout << sec << endl;
Enter fullscreen mode Exit fullscreen mode

}

}
Let's add the code for hours and minutes as well and also use our display function

include

include // in linux: sleep()

// #include // in windows: Sleep()

using namespace std;

void displayTime(int hours, int minutes, int seconds) {
cout << hours << ":"
<< minutes << ":"
<< seconds << endl;
}

int main() {
int hour = 0;
int min = 0;
int sec = 0;

while(true) {
sleep(1);

sec++;

if(sec > 59) {
  min++;
  sec = 0;
} 

if(min > 59) {
  hour++;
  sec = 0;
  min = 0;
}

displayTime(hour, min, sec);
Enter fullscreen mode Exit fullscreen mode

}
}
Running this code will start printing stopwatch with new time, line by line. We can handle this by simple clearing screen before displaying the next time.

Add system("clear") in displayTime function
We will also display initial time before entering the loop so that stopwatch display time from 0 hours, 0 minutes and 0 seconds instead of directly showing 1 second in console

include

include // in linux: sleep()

// #include // in windows: Sleep()

using namespace std;

void displayTime(int hours, int minutes, int seconds) {
// for linux
system("clear");

// for windows
// system("cls");

cout << hours << ":"
<< minutes << ":"
<< seconds << endl;
}

int main() {
int hour = 0;
int min = 0;
int sec = 0;

displayTime(hour, min, sec);

while(true) {
sleep(1);

sec++;

if(sec > 59) {
  min++;
  sec = 0;
} 

if(min > 59) {
  hour++;
  sec = 0;
  min = 0;
}

displayTime(hour, min, sec);
Enter fullscreen mode Exit fullscreen mode

}
}
Finally, compile and run it and hopefully you will see your very own console stopwatch. To stop the stopwatch, use Ctrl + C

This one was beginner friendly and doesn't use threads and chrono library. You can find the source code and working example in my repl.

I am not an expert in C++ but trying new things and applying them is important. Hope you learned something new out of this simple C++ stopwatch project.

Top comments (0)