Posted on by Kalkicode
Code Pattern

# Print M pattern

In this article, we will discuss how to print the M pattern using a C program. The M pattern consists of asterisks (*) arranged in the shape of the letter M. We will explain the problem statement, provide a suitable example, discuss the algorithm and pseudocode, and analyze the time complexity of the code. Let's get started!

## Problem Statement

The task is to write a program that takes an integer value as input and prints the M pattern using asterisks. The size of the pattern determines the height of the M.

### Example

For the input size = 5, the output will be:

``` *       *
* *   * *
*   *   *
*       *
*       *```

For the input size = 9, the output will be:

``` *               *
* *           * *
*   *       *   *
*     *   *     *
*       *       *
*               *
*               *
*               *
*               *```

## Algorithm and Pseudocode

To solve this problem, we can use a nested loop to iterate over each position in the pattern. The outer loop will iterate for each row, and the inner loop will iterate for each column.

1. Start by checking if the given size is valid. If the size is less than or equal to 2 or if it is an even number, return without printing anything.

2. Calculate the midpoint of the pattern by dividing the size by 2.

3. Iterate over each row using the variable 'i' from 0 to size-1.

4. For each row, iterate over each column using the variable 'j' from 0 to size-1.

5. Inside the inner loop, check the conditions for printing an asterisk (*):

• a. If the column is the first or the last column (j == 0 or j == size - 1), print an asterisk.
• b. If the row is within the top half of the pattern and is equal to the column (i <= mid && i == j), print an asterisk.
• c. If the row is within the top half of the pattern, is less than the midpoint, and the mirrored position of the row (size - 1 - i) is equal to the column (i < mid && size - 1 - i == j), print an asterisk.

6. If none of the conditions are met, print two spaces to maintain the shape of the M pattern.

7. After printing each row, move to the next line.

Here is the pseudocode for the algorithm:

``````function print_m(size):
if size <= 2 or size is even:
return
mid = size / 2
for i = 0 to size-1:
for j = 0 to size-1:
if j == 0 or j == size - 1 or (i <= mid and i == j) or (i < mid and size - 1 - i == j):
print " *"
else:
print "  "
move to the next line```
```

## Code Solution

Here given code implementation process.

``````//C Program
//Print M pattern
#include <stdio.h>

void print_m(int size)
{
if (size <= 2 || size % 2 == 0)
{
return;
}
printf("\nHeight : %d\n\n", size);
int mid = size / 2;
for (int i = 0; i < size; ++i)
{
for (int j = 0; j < size; ++j)
{
//Test case which is printing the value of star
if (j == 0 || j == size - 1 || (i <= mid && i == j) || (i < mid && size - 1 - i == j))
{
printf(" *");
}
else
{
//include double space
printf("  ");
}
}
printf("\n");
}
}
int main()
{
//Simple test
print_m(5);
print_m(9);
print_m(13);
return 0;
}``````

#### Output

``````Height : 5

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

Height : 9

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

Height : 13

*                       *
* *                   * *
*   *               *   *
*     *           *     *
*       *       *       *
*         *   *         *
*           *           *
*                       *
*                       *
*                       *
*                       *
*                       *
*                       *``````
``````/*
Java Program
Print M pattern
*/
class MyPattern
{
public void print_m(int size)
{
if (size <= 2 || size % 2 == 0)
{
return;
}
System.out.print("\nHeight : " + size + "\n\n");
int mid = size / 2;
for (int i = 0; i < size; ++i)
{
for (int j = 0; j < size; ++j)
{
//Test case which is printing the value of star
if (j == 0 || j == size - 1 || (i <= mid && i == j) || (i < mid && size - 1 - i == j))
{
System.out.print(" *");
}
else
{
//include double space
System.out.print("  ");
}
}
System.out.print("\n");
}
}
public static void main(String[] args)
{
MyPattern obj = new MyPattern();
//Simple test
obj.print_m(5);
obj.print_m(9);
obj.print_m(13);
}
}``````

#### Output

``````Height : 5

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

Height : 9

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

Height : 13

*                       *
* *                   * *
*   *               *   *
*     *           *     *
*       *       *       *
*         *   *         *
*           *           *
*                       *
*                       *
*                       *
*                       *
*                       *
*                       *``````
``````/*
C++ Program
Print M pattern
*/
#include<iostream>

using namespace std;
class MyPattern
{
public: void print_m(int size)
{
if (size <= 2 || size % 2 == 0)
{
return;
}
cout << "\nHeight : " << size << "\n\n";
int mid = size / 2;
for (int i = 0; i < size; ++i)
{
for (int j = 0; j < size; ++j)
{
//Test case which is printing the value of star
if (j == 0 || j == size - 1 || (i <= mid && i == j) || (i < mid && size - 1 - i == j))
{
cout << " *";
}
else
{
cout << "  ";
}
}
cout << "\n";
}
}
};
int main()
{
MyPattern obj = MyPattern();
//Simple test
obj.print_m(5);
obj.print_m(9);
obj.print_m(13);
return 0;
}``````

#### Output

``````Height : 5

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

Height : 9

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

Height : 13

*                       *
* *                   * *
*   *               *   *
*     *           *     *
*       *       *       *
*         *   *         *
*           *           *
*                       *
*                       *
*                       *
*                       *
*                       *
*                       *``````
``````/*
C# Program
Print M pattern
*/
using System;
class MyPattern
{
public void print_m(int size)
{
if (size <= 2 || size % 2 == 0)
{
return;
}
Console.Write("\nHeight : " + size + "\n\n");
int mid = size / 2;
for (int i = 0; i < size; i++)
{
for (int j = 0; j < size; j++)
{
//Test case which is printing the value of star
if (j == 0 || j == size - 1 || (i <= mid && i == j) || (i < mid && size - 1 - i == j))
{
Console.Write(" *");
}
else
{
//include double space
Console.Write("  ");
}
}
Console.Write("\n");
}
}
public static void Main(String[] args)
{
MyPattern obj = new MyPattern();
//Simple test
obj.print_m(5);
obj.print_m(9);
obj.print_m(13);
}
}``````

#### Output

``````Height : 5

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

Height : 9

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

Height : 13

*                       *
* *                   * *
*   *               *   *
*     *           *     *
*       *       *       *
*         *   *         *
*           *           *
*                       *
*                       *
*                       *
*                       *
*                       *
*                       *``````
``````<?php
/*
Php Program
Print M pattern
*/
class MyPattern
{
public	function print_m(\$size)
{
if (\$size <= 2 || \$size % 2 == 0)
{
return;
}
echo("\nHeight : ". \$size ."\n\n");
\$mid = intval(\$size / 2);
for (\$i = 0; \$i < \$size; ++\$i)
{
for (\$j = 0; \$j < \$size; ++\$j)
{
//Test case which is printing the value of star
if (\$j == 0 || \$j == \$size - 1 || (\$i <= \$mid && \$i == \$j) || (\$i < \$mid && \$size - 1 - \$i == \$j))
{
echo(" *");
}
else
{
//include double space
echo("  ");
}
}
echo("\n");
}
}
}

function main()
{
\$obj = new MyPattern();
//Simple test
\$obj->print_m(5);
\$obj->print_m(9);
\$obj->print_m(13);
}
main();``````

#### Output

``````Height : 5

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

Height : 9

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

Height : 13

*                       *
* *                   * *
*   *               *   *
*     *           *     *
*       *       *       *
*         *   *         *
*           *           *
*                       *
*                       *
*                       *
*                       *
*                       *
*                       *``````
``````/*
Node Js Program
Print M pattern
*/
class MyPattern
{
print_m(size)
{
if (size <= 2 || size % 2 == 0)
{
return;
}
process.stdout.write("\nHeight : " + size + "\n\n");
var mid = parseInt(size / 2);
for (var i = 0; i < size; ++i)
{
for (var j = 0; j < size; ++j)
{
//Test case which is printing the value of star
if (j == 0 || j == size - 1 || (i <= mid && i == j) || (i < mid && size - 1 - i == j))
{
process.stdout.write(" *");
}
else
{
//include double space
process.stdout.write("  ");
}
}
process.stdout.write("\n");
}
}
}

function main(args)
{
var obj = new MyPattern();
//Simple test
obj.print_m(5);
obj.print_m(9);
obj.print_m(13);
}
main();``````

#### Output

``````Height : 5

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

Height : 9

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

Height : 13

*                       *
* *                   * *
*   *               *   *
*     *           *     *
*       *       *       *
*         *   *         *
*           *           *
*                       *
*                       *
*                       *
*                       *
*                       *
*                       *``````
``````#   Python 3 Program
#   Print M pattern

class MyPattern :
def print_m(self, size) :
if (size <= 2 or size % 2 == 0) :
return

print("\nHeight : ", size ,"\n\n", end = "")
mid = int(size / 2)
i = 0
j = 0
while (i < size) :
j = 0
while (j < size) :
# Test case which is printing the value of star
if (j == 0 or j == size - 1 or(i <= mid and i == j) or(i < mid and size - 1 - i == j)) :
print(" *", end = "")
else :
print(" ", end = " ")

j += 1

print("\n", end = "")
i += 1

def main() :
obj = MyPattern()
# Simple test
obj.print_m(5)
obj.print_m(9)
obj.print_m(13)

if __name__ == "__main__": main()``````

#### Output

``````Height :  5

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

Height :  9

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

Height :  13

*                       *
* *                   * *
*   *               *   *
*     *           *     *
*       *       *       *
*         *   *         *
*           *           *
*                       *
*                       *
*                       *
*                       *
*                       *
*                       *``````
``````#   Ruby Program
#   Print M pattern

class MyPattern

def print_m(size)

if (size <= 2 || size % 2 == 0)

return
end
print("\nHeight : ", size ,"\n\n")
mid = size / 2
i = 0
j = 0
while (i < size)

j = 0
while (j < size)

# Test case which is printing the value of star
if (j == 0 || j == size - 1 || (i <= mid && i == j) || (i < mid && size - 1 - i == j))

print(" *")
else

print("  ")
end
j += 1
end
print("\n")
i += 1
end
end
end
def main()

obj = MyPattern.new()
# Simple test
obj.print_m(5)
obj.print_m(9)
obj.print_m(13)
end
main()``````

#### Output

``````Height : 5

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

Height : 9

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

Height : 13

*                       *
* *                   * *
*   *               *   *
*     *           *     *
*       *       *       *
*         *   *         *
*           *           *
*                       *
*                       *
*                       *
*                       *
*                       *
*                       *
``````
``````/*
Scala Program
Print M pattern
*/
class MyPattern
{
def print_m(size: Int): Unit = {
if (size <= 2 || size % 2 == 0)
{
return;
}
print("\nHeight : " + size + "\n\n");
var mid: Int = (size / 2).toInt;
var i: Int = 0;
var j: Int = 0;
while (i < size)
{
j = 0;
while (j < size)
{
//Test case which is printing the value of star
if (j == 0 || j == size - 1
|| (i <= mid && i == j)
|| (i < mid && size - 1 - i == j))
{
print(" *");
}
else
{
print("  ");
}
j += 1;
}
print("\n");
i += 1;
}
}
}
object Main
{
def main(args: Array[String]): Unit = {
var obj: MyPattern = new MyPattern();
//Simple test
obj.print_m(5);
obj.print_m(9);
obj.print_m(13);
}
}``````

#### Output

``````Height : 5

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

Height : 9

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

Height : 13

*                       *
* *                   * *
*   *               *   *
*     *           *     *
*       *       *       *
*         *   *         *
*           *           *
*                       *
*                       *
*                       *
*                       *
*                       *
*                       *``````
``````/*
Swift Program
Print M pattern
*/
class MyPattern
{
func print_m(_ size: Int)
{
if (size <= 2 || size % 2 == 0)
{
return;
}
print("\nHeight : ", size ,"\n\n", terminator: "");
let mid: Int = size / 2;
var i: Int = 0;
var j: Int = 0;
while (i < size)
{
j = 0;
while (j < size)
{
//Test case which is printing the value of star
if (j == 0 || j == size - 1 || (i <= mid && i == j) || (i < mid && size - 1 - i == j))
{
print(" *", terminator: "");
}
else
{
print("  ", terminator: "");
}
j += 1;
}
print("\n", terminator: "");
i += 1;
}
}
}
func main()
{
let obj: MyPattern = MyPattern();
//Simple test
obj.print_m(5);
obj.print_m(9);
obj.print_m(13);
}
main();``````

#### Output

``````Height :  5

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

Height :  9

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

Height :  13

*                       *
* *                   * *
*   *               *   *
*     *           *     *
*       *       *       *
*         *   *         *
*           *           *
*                       *
*                       *
*                       *
*                       *
*                       *
*                       *``````

## Time Complexity

The time complexity of the code is O(n^2), where n is the size of the pattern. This is because we use nested loops to iterate over each position in the pattern, resulting in quadratic time complexity.

## Finally

In this article, we have learned how to print the M pattern using a C program. We discussed the problem statement, provided examples, explained the algorithm and pseudocode, and analyzed the time complexity of the code. The M pattern can be a fun and challenging exercise to improve your programming skills. You can further modify the program to handle different patterns or add more complexity. Happy coding!

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.

Categories
Relative Post