Skip to content
Related Articles

Related Articles

Program to print the diamond shape

View Discussion
Improve Article
Save Article
  • Difficulty Level : Medium
  • Last Updated : 01 Aug, 2022

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.

Python3




# Python program to
# print Diamond shape
 
# Function to print
# Diamond shape
def Diamond(rows):
    n = 0
    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 != (2 * i - 1):
            print("*", end = "")
            n = n + 1
        n = 0
         
        # line break
        print()
 
    k = 1
    n = 1
    for i in range(1, rows):
        # loop to print spaces
        for j in range (1, k + 1):
            print(end = " ")
        k = k + 1
         
        # loop to print star
        while n <= (2 * (rows - i) - 1):
            print("*", end = "")
            n = n + 1
        n = 1
        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.

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
?>

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("  ");
 
          // Print i+1 stars
          for (var j = 0; j <= i; j++) document.write("*" + "  ");
 
          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("  ");
 
          // Print i stars
          for (var j = 0; j < i; j++) document.write("*" + "  ");
 
          document.write("<br>");
          space++;
        }
      }
 
      // Driver code
      printDiamond(5);
       
      // This code is contributed by rdtank.
    </script>

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.

Approach2: Solving the problem using Recursion

Implementation:

C++




// C++ program to print daimond 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 uper 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 daimond 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 uper part of triangle
    lowerDiamond(row, 1); // print lower part of diamond
}
}
  
// This code is contributed by adityapatil12

Python3




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 uper 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 uper part of triangle
    lowerDiamond(row, 1); // print lower part of diamond
  }
}
 
// This code is contributed by akashish__

Output

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

This article is contributed by Rahul Singh(Nit KKR) and improved by Himanshu Patel(@prophet1999). If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
 


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!