Open In App

Print pattern using only one loop | Set 1 (Using setw)

Improve
Improve
Like Article
Like
Save
Share
Report

Print simple patterns like below using single line of code under loop. 
Examples:

Input : 5
Output :
*
**
***
****
*****

Input : 6
Output :
*
**
***
****
*****
******

setw(n) Creates n columns and fills these n columns from right. We fill i of them with a given character, here we create a string with i asterisks using string constructor. setfill() Used to set fill character in a stream. Here we use it to fill remaining n-i-1 places with space (or ‘ ‘) in n columns. 

CPP




// CPP program to print a pattern using only
// one loop. <iomanip> is header file for stfill()
// and setw()
#include<iostream>
#include<iomanip>
using namespace std;
 
void generatePattern(int n)
{
    // Iterate for n lines
    for (int i=1 ; i<=n ; i++)
        cout << setfill(' ') << setw(n)
            << string(i, '*') << endl;
 
    // Remove multi-line commenting characters below
    // to get PATTERN WITH CHARACTERS IN LEFT AND
    // SPACE IN RIGHT
    /* for (int i=1 ; i<=n ; i++)
        cout << left << setfill(' ')
            << setw(n) << string(i,'*') << endl; */
}
 
// Driver code
int main()
{
    int n = 6;
    generatePattern(n);
    return 0;
}


Java




public class PatternPrinting {
    // Function to generate and print the pattern
    public static void generatePattern(int n) {
        for (int i = 1; i <= n; i++) {
            // Use printf to format the output with spaces on the left
            // and asterisks on the right, to create the pattern.
            System.out.printf("%" + n + "s%n", "*".repeat(i));
        }
    }
 
    public static void main(String[] args) {
        int n = 6; // Define the number of lines in the pattern
        generatePattern(n); // Call the pattern generation function
    }
}


Python3




#Python equivalent
#include <iostream> is replaced by print() function
#include <iomanip> is replaced by string.ljust()
 
def generatePattern(n):
    # Iterate for n lines
    for i in range(1, n+1):
        print(str('*'*i).rjust(n))
 
    # Remove multi-line commenting characters below
    # to get PATTERN WITH CHARACTERS IN LEFT AND
    # SPACE IN RIGHT
    '''for i in range(1, n+1):
        print(str('*'*i).ljust(n))'''
 
# Driver code
if __name__ == '__main__':
    n = 6
    generatePattern(n)


C#




// C# program to print a pattern using only
// one loop. System namespace is used for Console
// class.
using System;
 
public class GFG {
public static void GeneratePattern(int n)
{
// Iterate for n lines
for (int i = 1; i <= n; i++)
Console.WriteLine("{0," + n + "}", new String('*', i));
      // Remove multi-line commenting characters below
    // to get PATTERN WITH CHARACTERS IN LEFT AND
    // SPACE IN RIGHT
    /* for (int i=1 ; i<=n ; i++)
        Console.WriteLine("{0,-" + n + "}", new String('*', i)); */
}
 
// Driver code
public static void Main()
{
    int n = 6;
    GeneratePattern(n);
}
}


Javascript




// JS program to print a pattern using only
// one loop.
function generatePattern(n)
{
 
  // Iterate for n lines
  for (let i = 1; i <= n; i++) {
    console.log("*".repeat(i).padStart(n));
  }
 
  // Remove multi-line commenting characters below
  // to get PATTERN WITH CHARACTERS IN LEFT AND
  // SPACE IN RIGHT
  /*
  for (let i = 1; i <= n; i++) {
    console.log("*".repeat(i).padEnd(n));
  }
  */
}
 
// Driver code
const n = 6;
generatePattern(n);
 
// This code is contributed by akashish__


Output:

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

Time complexity: O(n2) for given input n
Auxiliary space: O(1)

Please refer below post for one more approach. Print pattern using only one loop | Set 2 (Using Continue) This article is contributed by Sakshi Tiwari. If you like GeeksforGeeks( We know you do! ) and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org.



Last Updated : 02 Nov, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads