Open In App

Program to print the Diamond Shape

Last Updated : 11 Oct, 2024
Summarize
Comments
Improve
Suggest changes
Like Article
Like
Save
Share
Report
News Follow

Given a number n, write a program to print a diamond shape with 2n rows.

Examples : 

diamond

C++
// C++ program to print diamond shape
// with 2n rows 
#include <bits/stdc++.h>
using namespace std;

// Prints diamond pattern with 2n rows 
void printDiamond(int n) 
{ 
    int space = n - 1; 

    // run loop (parent loop) 
    // till number of rows 
    for (int i = 0; i < n; i++) 
    { 
        // loop for initially space, 
        // before star printing 
        for (int j = 0;j < space; j++) 
            cout << " "; 

        // Print i+1 stars 
        for (int j = 0; j <= i; j++) 
            cout << "* "; 

        cout << endl; 
        space--; 
    } 

    // Repeat again in reverse order 
    space = 0; 

    // run loop (parent loop) 
    // till number of rows 
    for (int i = n; i > 0; i--) 
    { 
        // loop for initially space, 
        // before star printing 
        for (int j = 0; j < space; j++) 
            cout << " "; 

        // Print i stars 
        for (int j = 0;j < i;j++) 
            cout << "* ";

        cout << endl;
        space++; 
    } 
} 

// Driver code 
int main() 
{ 
    printDiamond(5); 
    return 0; 
} 

// This is code is contributed
// by rathbhupendra
C
// C program to print 
// diamond shape with 
// 2n rows
#include<stdio.h>

// Prints diamond 
// pattern with 2n rows
void printDiamond(int n)
{
    int space = n - 1;

    // run loop (parent loop)
    // till number of rows
    for (int i = 0; i < n; i++)
    {
        // loop for initially space, 
        // before star printing
        for (int j = 0;j < space; j++)
            printf(" ");

        // Print i+1 stars
        for (int j = 0;j <= i; j++)
            printf("* ");

        printf("\n");
        space--;
    }

    // Repeat again in 
    // reverse order
    space = 0;

    // run loop (parent loop)
    // till number of rows
    for (int i = n; i > 0; i--)
    {
        // loop for initially space, 
        // before star printing
        for (int j = 0; j < space; j++)
            printf(" ");

        // Print i stars
        for (int j = 0;j < i;j++)
            printf("* ");

        printf("\n");
        space++;
    }
}

// Driver code
int main()
{
    printDiamond(5);
    return 0;
}
Java
// JAVA Code to print 
// the diamond shape
import java.util.*;

class GFG
{
    
    // Prints diamond pattern
    // with 2n rows
    static void printDiamond(int n)
    {
        int space = n - 1;
    
        // run loop (parent loop) 
        // till number of rows
        for (int i = 0; i < n; i++)
        {
            // loop for initially space, 
            // before star printing
            for (int j = 0; j < space; j++)
                System.out.print(" ");
    
            // Print i+1 stars
            for (int j = 0; j <= i; j++)
                System.out.print("* ");
    
            System.out.print("\n");
            space--;
        }
    
        // Repeat again in
        // reverse order
        space = 0;
    
        // run loop (parent loop) 
        // till number of rows
        for (int i = n; i > 0; i--)
        {
            // loop for initially space, 
            // before star printing
            for (int j = 0; j < space; j++)
                System.out.print(" ");
    
            // Print i stars
            for (int j = 0; j < i; j++)
                System.out.print("* ");
    
            System.out.print("\n");
            space++;
        }
    }
    
    // Driver Code
    public static void main(String[] args) 
    {
        printDiamond(5);
        
    }
}

// This code is contributed
// by Arnav Kr. Mandal. 
Python
# Python program to
# print Diamond shape

# Function to print
# Diamond shape
def Diamond(rows):
    n = 1
    for i in range(1, rows + 1):
        # loop to print spaces
        for j in range (1, (rows - i) + 1):
            print(end = " ")
        
        # loop to print star
        while n != (i+1):
            print("*", end = " ")
            n = n + 1
        n = 1
        
        # line break
        print()

    k = 0
    n = 0
    for i in range(1, rows + 1):
        # loop to print spaces
        for j in range (1, k + 1):
            print(end = " ")
        k = k + 1
        
        # loop to print star
        while n <= (rows - i):
            print("*", end = " ")
            n = n + 1
        n = 0
        print()

# Driver Code
# number of rows input
rows = 5
Diamond(rows)
C#
// C# Code to print 
// the diamond shape
using System;

class GFG 
{
    
    // Prints diamond pattern
    // with 2n rows
    static void printDiamond(int n)
    {
        int space = n - 1;
    
        // run loop (parent loop) 
        // till number of rows
        for (int i = 0; i < n; i++)
        {
            // loop for initially space,
            // before star printing
            for (int j = 0; j < space; j++)
                Console.Write(" ");
    
            // Print i+1 stars
            for (int j = 0; j <= i; j++)
                Console.Write("* ");
    
            Console.Write("\n");
            space--;
        }
    
        // Repeat again in
        // reverse order
        space = 0;
    
        // run loop (parent loop)
        // till number of rows
        for (int i = n; i > 0; i--)
        {
            // loop for initially space, 
            // before star printing
            for (int j = 0; j < space; j++)
                Console.Write(" ");
    
            // Print i stars
            for (int j = 0; j < i; j++)
                Console.Write("* ");
    
            Console.Write("\n");
            space++;
        }
    }
    
    // Driver Code
    public static void Main() 
    {
        printDiamond(5);
        
    }
}

// This code is contributed 
// by Smitha Semwal. 
JavaScript
<script>
      // JavaScript program to print diamond shape
      // with 2n rows

      // Prints diamond pattern with 2n rows
      function printDiamond(n) {
        var space = n - 1;

        // run loop (parent loop)
        // till number of rows
        for (var i = 0; i < n; i++) {
          // loop for initially space,
          // before star printing
          for (var j = 0; j < space; j++) document.write("&nbsp;&nbsp;");

          // Print i+1 stars
          for (var j = 0; j <= i; j++) document.write("*" + "&nbsp;&nbsp;");

          document.write("<br>");
          space--;
        }

        // Repeat again in reverse order
        space = 0;

        // run loop (parent loop)
        // till number of rows
        for (var i = n; i > 0; i--) 
        {
        
          // loop for initially space,
          // before star printing
          for (var j = 0; j < space; j++) document.write("&nbsp;&nbsp;");

          // Print i stars
          for (var j = 0; j < i; j++) document.write("*" + "&nbsp;&nbsp;");

          document.write("<br>");
          space++;
        }
      }

      // Driver code
      printDiamond(5);
      
      // This code is contributed by rdtank.
    </script>
PHP
<?php
// PHP program to print 
// diamond shape with 
// 2n rows

// Prints diamond $
// pattern with 2n rows
function printDiamond($n)
{
    $space = $n - 1;

    // run loop (parent loop)
    // till number of rows
    for ($i = 0; $i < $n; $i++)
    {
        
        // loop for initially space, 
        // before star printing
        for ($j = 0;$j < $space; $j++)
            printf(" ");

        // Print i+1 stars
        for ($j = 0;$j <= $i; $j++)
            printf("* ");

        printf("\n");
        $space--;
    }

    // Repeat again in 
    // reverse order
    $space = 0;

    // run loop (parent loop)
    // till number of rows
    for ($i = $n; $i > 0; $i--)
    {
        
        // loop for initially space, 
        // before star printing
        for ($j = 0; $j < $space; $j++)
            printf(" ");

        // Pr$i stars
        for ($j = 0;$j < $i;$j++)
            printf("* ");

        printf("\n");
        $space++;
    }
}

    // Driver code
    printDiamond(5);

// This code is contributed by Anuj_67
?>

Output
    * 
   * * 
  * * * 
 * * * * 
* * * * * 
* * * * * 
 * * * * 
  * * * 
   * * 
    * 

Time Complexity: O(n*n) since we are traversing rows and columns of a grid for printing spaces ‘ ‘ and star ‘*’.
Auxiliary Space: O(1), No extra Space used.

For more practice with pattern printing and mastering loops in C, our C programming course provides a variety of exercises and projects to strengthen your understanding of these core concepts.

Approach 2: Solving the problem using Recursion

Below is the implementation of the above approach:

C++
// C++ program to print diamond pattern using recursion
#include <bits/stdc++.h>
using namespace std;
void gotonextLine(int k, int i, int z)
{
    if (k == i) // base case
        return;
    cout << "* ";
    gotonextLine(k + z, i, z);
}
void addblankSpaceInDiamond(
    int j, int i, int z) // print blank space of diamond
{
    if (j == i)
        return;
    cout << " ";
    addblankSpaceInDiamond(j + z, i, z);
}
void upperDiamond(int row, int i)
{
    if (i > row) // base case
        return;
    addblankSpaceInDiamond(row, i, -1);
    gotonextLine(0, i, 1);
    cout << endl;
    upperDiamond(row, i + 1); // recursive call
}
void lowerDiamond(int row,
                  int i) // print the next line of diamond
{
    if (i > row) // base case
        return;
    addblankSpaceInDiamond(0, i, 1);
    gotonextLine(row, i, -1);
    cout << endl;
    lowerDiamond(row, i + 1);
}
int main()
{
    int row;
    row = 5;
    upperDiamond(row, 0); // print upper part of triangle
    lowerDiamond(row, 1); // print lower part of diamond
    return 0;
    // this code is contributed by Shivesh Kumar Dwivedi
}
Java
// Java program to print diamond pattern using recursion
import java.io.*;
 
class GFG{
     
static void gotonextLine(int k, int i, int z)
{
    if (k == i) // base case
        return;
    System.out.print("* ");
    gotonextLine(k + z, i, z);
}
static void addblankSpaceInDiamond(int j, int i, int z) // print blank space of diamond
{
    if (j == i)
        return;
    System.out.print(" ");
    addblankSpaceInDiamond(j + z, i, z);
} 
static void upperDiamond(int row, int i)
{
    if (i > row) // base case
        return;
    addblankSpaceInDiamond(row, i, -1);
    gotonextLine(0, i, 1);
    System.out.print("\n");
    upperDiamond(row, i + 1); // recursive call
}
static void lowerDiamond(int row, int i) // print the next line of diamond
{
    if (i > row) // base case
        return;
    addblankSpaceInDiamond(0, i, 1);
    gotonextLine(row, i, -1);
    System.out.print("\n");
    lowerDiamond(row, i + 1);
}
 
// Driver Code
public static void main(String[] args)
{
    int row;
    row = 5;
    upperDiamond(row, 0); // print upper part of triangle
    lowerDiamond(row, 1); // print lower part of diamond
}
}
 
// This code is contributed by adityapatil12
Python
def gotonextLine(k, i, z):
  # base case
    if (k == i):
      return
    print("* ", end=""),
    gotonextLine(k + z, i, z)

# print blank space of diamond
def addblankSpaceInDiamond(j,i,z):
    if (j == i):
      return
    print(" ",end=""),
    addblankSpaceInDiamond(j + z, i, z)

def upperDiamond(row,i):
  # base case
    if (i > row):
      return
    addblankSpaceInDiamond(row, i, -1)
    gotonextLine(0, i, 1)
    print("\n",end=""),
    upperDiamond(row, i + 1) # recursive call


def lowerDiamond(row,i):
  # print the next line of diamond
    if (i > row): # base case
      return
    addblankSpaceInDiamond(0, i, 1)
    gotonextLine(row, i, -1)
    print("\n",end=""),
    lowerDiamond(row, i + 1)

# Code
row = 5
upperDiamond(row, 0) # print upper part of triangle
lowerDiamond(row, 1) # print lower part of diamond

# This code is contributed by akashish__
C#
using System;

public class GFG{

  public static void gotonextLine(int k, int i, int z)
  {
    if (k == i) // base case
      return;
    Console.Write("* ");
    gotonextLine(k + z, i, z);
  }

  public static void addblankSpaceInDiamond(
    int j, int i, int z) // print blank space of diamond
  {
    if (j == i)
      return;
    Console.Write(" ");
    addblankSpaceInDiamond(j + z, i, z);
  }

  public static void upperDiamond(int row, int i)
  {
    if (i > row) // base case
      return;
    addblankSpaceInDiamond(row, i, -1);
    gotonextLine(0, i, 1);
    Console.Write("\n");
    upperDiamond(row, i + 1); // recursive call
  }


  public static void lowerDiamond(int row,
                                  int i) // print the next line of diamond
  {
    if (i > row) // base case
      return;
    addblankSpaceInDiamond(0, i, 1);
    gotonextLine(row, i, -1);
    Console.Write("\n");
    lowerDiamond(row, i + 1);
  }

  public static void Main ()
  {

    // Code
    int row;
    row = 5;
    upperDiamond(row, 0); // print upper part of triangle
    lowerDiamond(row, 1); // print lower part of diamond
  }
}

// This code is contributed by akashish__
JavaScript
    // JavaScript program to print diamond pattern using recursion         
    function gotonextLine(k, i, z)
    {
        if (k == i) // base case
            return;
        console.log("*&nbsp;");
        gotonextLine(k + z, i, z);
    }
    function addblankSpaceInDiamond(j, i, z) // print blank space of diamond
    {
        if (j == i)
            return;
        console.log("&nbsp;");
        addblankSpaceInDiamond(j + z, i, z);
    } 
    function upperDiamond(row, i)
    {
        if (i > row) // base case
            return;
        addblankSpaceInDiamond(row, i, -1);
        gotonextLine(0, i, 1);
        console.log("<br>");
        upperDiamond(row, i + 1); // recursive call
    }
    function lowerDiamond(row, i) // print the next line of diamond
    {
        if (i > row) // base case
            return;
        addblankSpaceInDiamond(0, i, 1);
        gotonextLine(row, i, -1);
        console.log("<br>");
        lowerDiamond(row, i + 1);
    }
     
    // Driver Code 
        let row;
        row = 5;
        upperDiamond(row, 0); // print upper part of triangle
        lowerDiamond(row, 1); // print lower part of diamond
    
    // This code is contributed by agfro1cac

Output
     
    * 
   * * 
  * * * 
 * * * * 
* * * * * 
 * * * * 
  * * * 
   * * 
    * 
     

Time Complexity: O(N2), Since we are traversing rows and columns of a grid for printing spaces ‘ ‘ and star ‘*’.
Auxiliary Space: O(N), The extra space is used in recursion call stack.



Next Article

Similar Reads

three90RightbarBannerImg