Print the pattern in which there is a hollow square and plus sign inside it. The pattern will be as per the n i.e. number of rows given as shown in the example.
Examples:
Input : 6
Output : * * * * * *
* * * *
* * * * * *
* * * * * *
* * * *
* * * * * *
Input : 7
Output : * * * * * * *
* * *
* * *
* * * * * * *
* * *
* * *
* * * * * * *
Approach:
- We will start a for loop up till n and inside this also there is for loop up till n.
- In this simply we have to check if the row is first or last or column is first or last, then print "*".
- Now we have to check for the middle row and column.
- So when n is odd, we will have a middle row and column and if row or column is in middle then we will print "*".
- If n is even, then rows or columns if equal to these values n/2 and (n/2)+1, then we will print "*".
- Else everywhere we have to print " "(space).
Below is the implementation.
// C++ program to print the pattern
// hollow square with plus inside it
// window pattern
#include <bits/stdc++.h>
using namespace std;
// Function to print pattern n means
// number of rows which we want
void window_pattern (int n)
{
int c, d;
// If n is odd then we will have
// only one middle element
if (n % 2 != 0)
{
c = (n / 2) + 1;
d = 0;
}
// If n is even then we will have two
// values
else
{
c = (n / 2) + 1;
d = n / 2 ;
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
// If i,j equals to corner row or
// column then "*"
if (i == 1 || j == 1 ||
i == n || j == n)
cout << "* ";
else
{
// If i,j equals to the middle
// row or column then "*"
if (i == c || j == c)
cout << "* ";
else if (i == d || j == d)
cout << "* ";
else
cout << " ";
}
}
cout << '\n';
}
}
// Driver Code
int main()
{
int n = 7;
window_pattern(n);
return 0;
}
// This code is contributed by himanshu77
// Java program to print the pattern
// hollow square with plus inside it
// window pattern
class GFG
{
// Function to print pattern n means
// number of rows which we want
static void window_pattern (int n)
{
int c, d;
// If n is odd then we will have
// only one middle element
if (n % 2 != 0)
{
c = (n / 2) + 1;
d = 0;
}
// If n is even then we will have
// two values
else
{
c = (n / 2) + 1;
d = n / 2 ;
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
// If i,j equals to corner row
// or column then "*"
if (i == 1 || j == 1 ||
i == n || j == n)
System.out.print("* ");
else
{
// If i,j equals to the middle
// row or column then "*"
if (i == c || j == c)
System.out.print("* ");
else if (i == d || j == d)
System.out.print("* ");
else
System.out.print(" ");
}
}
System.out.println();
}
}
// Driver code
public static void main(String[] args)
{
int n = 7;
window_pattern(n);
}
}
// This code is contributed by divyeshrabadiya07
# Python3 program to print the pattern
# hollow square with plus inside it
# window pattern
# function to print pattern n means
# number of rows which we want
def window_pattern(n):
# if n is odd then we will have
# only one middle element
if n % 2 != 0:
c = ( n // 2 ) + 1
d = 0
# if n is even then we will have two
# values
else:
c = ( n // 2 ) + 1
d = ( n // 2 )
for i in range( 1 , n + 1 ):
for j in range( 1 , n + 1 ):
# if i,j equals to corner row or
# column then "*"
if i == 1 or j == 1 or i == n or j == n:
print("*",end=" ")
else:
# if i,j equals to the middle row
# or column then "*"
if i == c or j == c:
print("*",end=" ")
elif i == d or j == d:
print("*",end=" ")
else:
print(" ",end=" ")
print()
# Driver Code
if __name__ == "__main__":
n = 7
window_pattern(n)
// C# program to print the pattern
// hollow square with plus inside it
// window pattern
using System;
class GFG{
// Function to print pattern n means
// number of rows which we want
static void window_pattern (int n)
{
int c, d;
// If n is odd then we will have
// only one middle element
if (n % 2 != 0)
{
c = (n / 2) + 1;
d = 0;
}
// If n is even then we will have
// two values
else
{
c = (n / 2) + 1;
d = n / 2 ;
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
// If i,j equals to corner row
// or column then "*"
if (i == 1 || j == 1 ||
i == n || j == n)
Console.Write("* ");
else
{
// If i,j equals to the middle
// row or column then "*"
if (i == c || j == c)
Console.Write("* ");
else if (i == d || j == d)
Console.Write("* ");
else
Console.Write(" ");
}
}
Console.WriteLine();
}
}
// Driver code
static void Main()
{
int n = 7;
window_pattern(n);
}
}
// This code is contributed by divyesh072019
<script>
// JavaScript program to
// print the pattern
// hollow square with
// plus inside it
// window pattern
// Function to print pattern n means
// number of rows which we want
function window_pattern(n)
{
var c, d;
// If n is odd then we will have
// only one middle element
if (n % 2 != 0) {
c = parseInt(n / 2 + 1);
d = 0;
}
// If n is even then we will have two
// values
else {
c = parseInt(n / 2 + 1);
d = parseInt(n / 2);
}
for (var i = 1; i <= n; i++) {
for (var j = 1; j <= n; j++) {
// If i,j equals to corner row or
// column then "*"
if (i == 1 || j == 1 || i == n || j == n)
document.write("* ");
else {
// If i,j equals to the middle
// row or column then "*"
if (i == c || j == c)
document.write("* ");
else if (i == d || j == d)
document.write("* ");
else
document.write(" ");
}
}
document.write("<br>");
}
}
// Driver Code
var n = 7;
window_pattern(n);
</script>
Output :
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Time complexity: O(n2)
Auxiliary space: O(1) because it is using constant space for variables