Related Articles

# Printing string in plus ‘+’ pattern in the matrix

• Difficulty Level : Easy
• Last Updated : 12 Dec, 2018

Given a string, print it inside a matrix in such a way that a ‘plus’ is formed.

Examples:

```Input: TOP
Output:
X    T    X
T    O    P
X    P    X

Input: FEVER
Output:
X    X    F    X    X
X    X    E    X    X
F    E    V    E    R
X    X    E    X    X
X    X    R    X    X

```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:
The idea is simple. First we can access every element of the matrix and make it ‘X’. Then we will insert the characters of the string in the middle row as well as in the middle column of the matrix. For example, we have string of length 5. So we will need a (5X5) matrix for it. To access the middle column of the matrix, column index is made constant and is equal to (n/2), where n is the length of the string. Row index will go from 0 to (n-1) for it.
To access the middle row, the row index will be made constant and equal to (n/2) and the column index will go from 0 to (n-1).

Below is the implementation of above approach:

## C++

 `// CPP program to print the ``// string in 'plus' pattern``#include ``#define max 100``using` `namespace` `std;`` ` `// Function to make a cross in the matrix``void` `carveCross(string str)``{ ``    ``int` `n = str.length();``    ``if` `(n % 2 == 0) ``    ``{  ``        ``/* As, it is not possible to make ``        ``the cross exactly in the middle of ``        ``the matrix with an even length string.*/``        ``cout << ``"Not possible. Please enter "``             ``<< ``"odd length string.\n"``;``    ``}``    ``else` `{`` ` `        ``// declaring a 2D array i.e a matrix``        ``char` `arr[max][max]; ``        ``int` `m = n / 2;`` ` `        ``/* Now, we will fill all the ``        ``elements of the array with 'X'*/``        ``for` `(``int` `i = 0; i < n; i++) {``            ``for` `(``int` `j = 0; j < n; j++) {``                ``arr[i][j] = ``'X'``;``            ``}``        ``}`` ` `        ``/* Now, we will place the characters ``        ``of the string in the matrix, such ``        ``that a cross is formed in it.*/``        ``for` `(``int` `i = 0; i < n; i++) ``        ``{ ``            ``/* here the characters of the ``            ``string will be added in the ``            ``middle column of our array.*/``            ``arr[i][m] = str[i];``        ``}``         ` `        ``for` `(``int` `i = 0; i < n; i++) ``        ``{ ``            ``// here the characters of the ``            ``// string will be added in the ``            ``// middle row of our array.``            ``arr[m][i] = str[i];``        ``}`` ` `        ``/* Now finally, we will print ``        ``the array*/``        ``for` `(``int` `i = 0; i < n; i++) {``            ``for` `(``int` `j = 0; j < n; j++) {``                ``cout << arr[i][j] << ``" "``;``            ``}``            ``cout << ``"\n"``;``        ``}``    ``}``}`` ` `// driver code``int` `main()``{``    ``string str = ``"PICTURE"``;``    ``carveCross(str);``    ``return` `0;``}`

## Java

 `// Java program to print the``// string in 'plus' pattern``class` `GFG {``static` `final` `int` `max = ``100``;`` ` `// Function to make a cross in the matrix``static` `void` `carveCross(String str) {``    ``int` `n = str.length();``    ``if` `(n % ``2` `== ``0``) {``         ` `        ``// As, it is not possible to make``        ``// the cross exactly in the middle of``        ``// the matrix with an even length string.``        ``System.out.print(``"Not possible. Please enter "``                             ``+ ``"odd length string.\n"``);``    ``} ``    ``else` `{`` ` `        ``// declaring a 2D array i.e a matrix``        ``char` `arr[][] = ``new` `char``[max][max];``        ``int` `m = n / ``2``;`` ` `        ``// Now, we will fill all the``        ``// elements of the array with 'X'``        ``for` `(``int` `i = ``0``; i < n; i++) ``        ``{``            ``for` `(``int` `j = ``0``; j < n; j++) ``            ``{``                ``arr[i][j] = ``'X'``;``        ``}``    ``}`` ` `    ``// Now, we will place the characters``    ``// of the string in the matrix, such``    ``// that a cross is formed in it.``    ``for` `(``int` `i = ``0``; i < n; i++) {``         ` `        ``// here the characters of the``        ``// string will be added in the``        ``// middle column of our array.``        ``arr[i][m] = str.charAt(i);``    ``}`` ` `    ``for` `(``int` `i = ``0``; i < n; i++) {``         ` `        ``// here the characters of the``        ``// string will be added in the``        ``// middle row of our array.``        ``arr[m][i] = str.charAt(i);``    ``}`` ` `    ``// Now finally, we will print``    ``// the array``    ``for` `(``int` `i = ``0``; i < n; i++)``    ``{``        ``for` `(``int` `j = ``0``; j < n; j++)``        ``{``            ``System.out.print(arr[i][j] + ``" "``);``        ``}``        ``System.out.print(``"\n"``);``    ``}``    ``}``}`` ` `// Driver code``public` `static` `void` `main(String[] args) {``    ``String str = ``"PICTURE"``;``    ``carveCross(str);``}``}``// This code is contributed by Anant Agarwal.`

## Python 3

 `# Python 3 program to print the ``# string in 'plus' pattern``max` `=` `100`` ` `# Function to make a cross ``# in the matrix``def` `carveCross(``str``):``     ` `    ``n ``=` `len``(``str``)``    ``if` `(n ``%` `2` `=``=` `0``) :``     ` `        ``''' As, it is not possible to make ``        ``the cross exactly in the middle of ``        ``the matrix with an even length string.'''``        ``print``(``"Not possible. Please enter "``            ``, ``"odd length string.\n"``)``     ` `    ``else` `:`` ` `        ``# declaring a 2D array i.e a matrix``        ``arr ``=` `[[ ``False` `for` `x ``in` `range``(``max``)] ``                       ``for` `y ``in` `range``(``max``)] ``        ``m ``=` `n ``/``/` `2`` ` `        ``''' Now, we will fill all the ``        ``elements of the array with 'X'''``        ``for` `i ``in` `range``( n) :``            ``for` `j ``in` `range``(n) :``                ``arr[i][j] ``=` `'X'`` ` `        ``'''Now, we will place the characters ``        ``of the string in the matrix, such ``        ``that a cross is formed in it.'''``        ``for` `i ``in` `range``(n):``         ` `            ``''' here the characters of the ``            ``string will be added in the ``            ``middle column of our array.'''``            ``arr[i][m] ``=` `str``[i]``         ` `        ``for` `i ``in` `range``(n):``         ` `            ``# here the characters of the ``            ``# string will be added in the ``            ``# middle row of our array.``            ``arr[m][i] ``=` `str``[i]`` ` `        ``# Now finally, we will print ``        ``# the array``        ``for` `i ``in` `range``(n):``            ``for` `j ``in` `range``(n):``                ``print``( arr[i][j] , end``=``" "``)``             ` `            ``print``()`` ` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:``    ``str` `=` `"PICTURE"``    ``carveCross(``str``)`` ` `# This code is contributed ``# by ChitraNayal`

## C#

 `// C# program to print the``// string in 'plus' pattern``using System;``class GFG {``static  int max = 100;`` ` `// Function to make a cross in the matrix``static void carveCross(String str) {``    ``int n = str.Length;``    ``if (n % 2 == 0) {``         ` `        ``// As, it is not possible to make``        ``// the cross exactly in the middle of``        ``// the matrix with an even length string.``        ``Console.Write("Not possible. Please enter "``                            ``+ "odd length string.");``    ``} ``    ``else {`` ` `        ``// declaring a 2D array i.e a matrix``        ``char [,]arr = new char[max,max];``        ``int m = n / 2;`` ` `        ``// Now, we will fill all the``        ``// elements of the array with 'X'``        ``for (int i = 0; i < n; i++) ``        ``{``            ``for (int j = 0; j < n; j++) ``            ``{``                ``arr[i,j] = 'X';``        ``}``    ``}`` ` `    ``// Now, we will place the characters``    ``// of the string in the matrix, such``    ``// that a cross is formed in it.``    ``for (int i = 0; i < n; i++) {``         ` `        ``// here the characters of the``        ``// string will be added in the``        ``// middle column of our array.``        ``arr[i,m] = str[i];``    ``}`` ` `    ``for (int i = 0; i < n; i++) {``         ` `        ``// here the characters of the``        ``// string will be added in the``        ``// middle row of our array.``        ``arr[m,i] = str[i];``    ``}`` ` `    ``// Now finally, we will print``    ``// the array``    ``for (int i = 0; i < n; i++)``    ``{``        ``for (int j = 0; j < n; j++)``        ``{``            ``Console.Write(arr[i,j] + " ");``        ``}``           ``Console.WriteLine();``    ``}``    ``}``}`` ` `// Driver code``public static void Main() {``    ``string str = "PICTURE";``    ``carveCross(str);``}``}``// This code is contributed by vt_m.`

## PHP

 ``

Output:
```X X X P X X X
X X X I X X X
X X X C X X X
P I C T U R E
X X X U X X X
X X X R X X X
X X X E X X X
```

Attention reader! Don’t stop learning now. Join the First-Step-to-DSA Course for Class 9 to 12 students , specifically designed to introduce data structures and algorithms to the class 9 to 12 students

My Personal Notes arrow_drop_up