Introduction :
In this tutorial, we will learn how to print hollow triangle in C++. Our program will take the height of the triangle as an input from the user and print it out.
*
* *
* *
* *
* *
* *
*************
This is a triangle with height 7.
I will show you one easier way to solve these types of problems. Let’s take a look:
Designing the algorithm :
You can solve any pattern by drawing it on a paper. For the above triangle, we are filling the vacant space with blank spaces. Or we need to print blank space for the empty spaces and star * for the triangle.
Think it like you are printing the triangle on a graph paper. It will look as like below if you replace the blank space with $ :
$$$$$$*
$$$$$*$*
$$$$*$$$*
$$$*$$$$$*
$$*$$$$$$$*
$*$$$$$$$$$*
*************
If we replace each $ with a blank space, it will create the below triangle :
*
* *
* *
* *
* *
* *
*************
This is the hollow triangle that we want to create programmatically. Now, forget about it. Let’s analyze the first triangle :
1st line : 6$ => 1 (one *)
2nd line : 5$ => 3 (first and the last is *, middle is $)
3rd line : 4$ => 5 (same as above)
4th line : 3$ => 7 (same as above)
5th line : 2$ => 9 (same as above)
6th line : 1$ => 11 (same as above)
7th line : 0$ => 13 (all are *)
Here,
-
The number of $ is kept decreasing from 6 to 0.
-
The first and the last line will print only *
-
After $ is printed, other characters are printed for 2*n - 1 time, where n is the step number.
-
After $ is printed, all middle lines will print one * at the start and end with $ in the mid.
C++ program :
Let’s write down the above logic in the code. We will print one space instead of a $ here :
#include <iostream>
using namespace std;
int main()
{
int height;
//1
cout << "Enter the height of the triangle : "; cin >> height;
//2
for (int i = 1; i <= height; i++)
{
//3
for (int j = 1; j <= (height - i); j++)
{
cout << " ";
}
//4
for (int k = 1; k <= i * 2 - 1; k++)
{
//5
if (k == 1 || k == i * 2 - 1)
{
cout << "*";
}
else if (i == height)
{
//6
cout << "*";
}
else
{
//7
cout << " ";
}
}
//8
cout << endl;
}
return 0;
}
Explanation :
The commented numbers in the above program denote the step numbers below :
-
Ask the user to enter the height of the triangle. Read and store it in the height variable.
-
This will run the for loop for height number of times. This loop is used to print each row of the triangle.
-
This is an inner for loop. This loop is used to print the starting blank spaces. In the above example, it is meant for the starting $ symbols.
-
This loop is used to print the other characters after the blank spaces. It will run from 1 to i*2 -1.
-
Print * at the start and end.
-
Print only * for the last line.
-
Else, print blank space.
-
At the end of the outer for loop, print one new line, i.e. move to the next row.
Sample Output :
Conclusion :
You can easily solve any print puzzle questions if you divide the problem into steps as I have shown above. Try to solve it on your own and if you have any questions, drop one comment below.