C Program to Print Sandglass Star Pattern

Introduction

A sandglass star pattern consists of stars (*) arranged in the shape of an hourglass or sandglass. The pattern can be divided into two parts: an inverted triangle followed by a regular triangle. This exercise helps in understanding how to use loops and conditional logic to create symmetrical patterns.

Problem Statement

Create a C program that:

  • Accepts the number of rows for the sandglass pattern.
  • Prints a sandglass star pattern.

Example:

  • Input: rows = 5
  • Output:
    *********
     *******
      *****
       ***
        *
       ***
      *****
     *******
    *********
    

Solution Steps

  1. Input the Number of Rows: The size determines the height of the sandglass.
  2. Use Nested Loops: The outer loop will handle the rows, while the inner loops handle printing the spaces and stars for both the upper (inverted) and lower triangles.
  3. Display the Sandglass Pattern: Print stars in decreasing order for the upper part and increasing order for the lower part.

C Program

#include <stdio.h>

int main() {
    int i, j, rows;

    // Step 1: Accept the number of rows for the sandglass pattern
    printf("Enter the number of rows: ");
    scanf("%d", &rows);

    // Step 2: Print the upper part of the sandglass (inverted triangle)
    for (i = 0; i < rows; i++) {
        // Print spaces for alignment
        for (j = 0; j < i; j++) {
            printf(" ");
        }
        // Print stars for the inverted triangle
        for (j = 0; j < (2 * (rows - i) - 1); j++) {
            printf("*");
        }
        printf("\n");
    }

    // Step 3: Print the lower part of the sandglass (regular triangle)
    for (i = 1; i < rows; i++) {
        // Print spaces for alignment
        for (j = 1; j < rows - i; j++) {
            printf(" ");
        }
        // Print stars for the regular triangle
        for (j = 0; j < (2 * i + 1); j++) {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

Explanation

Step 1: Input Number of Rows

  • The program begins by asking the user to input the number of rows, which determines the size of the sandglass pattern.

Step 2: Print the Upper Part (Inverted Triangle)

  • The outer loop controls the number of rows for the upper (inverted) part of the sandglass.
  • An inner loop prints spaces to align the stars properly, and another inner loop prints the stars (*) in decreasing order, forming the inverted triangle.

Step 3: Print the Lower Part (Regular Triangle)

  • The second outer loop handles the rows for the lower part (regular triangle) of the sandglass.
  • The inner loops print the necessary spaces and stars in increasing order to form the triangle.

Output Example

For rows = 5, the output will be:

*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********

For rows = 6, the output will be:

***********
 *********
  *******
   *****
    ***
     *
    ***
   *****
  *******
 *********
***********

Conclusion

This C program prints a sandglass star pattern by using nested loops to handle the inverted and regular triangles. This exercise is helpful for practicing loop control, pattern generation, and conditional printing in C programming.

Comments