Wednesday, July 3, 2024
HomeData ModellingData Structure & AlgorithmPrinting string in plus ‘+’ pattern in the matrix

Printing string in plus ‘+’ pattern in the matrix

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

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 <bits/stdc++.h>
#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




<?php
// PHP program to print the string
// in 'plus' pattern
  
// Function to make a cross 
// in the matrix
function carveCross($str)
    $n = strlen($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.*/
        echo ("Not possible. Please enter ");
        echo( "odd length string.\n");
    }
    else
    {
  
        // declaring a 2D array i.e a matrix
        $arr = array(); 
        $m = $n / 2;
  
        /* Now, we will fill all the 
        elements of the array with 'X'*/
        for ($i = 0; $i < $n; $i++) 
        {
            for ($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 ($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 ($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 ($i = 0; $i < $n; $i++)
        {
            for ($j = 0; $j < $n; $j++) 
            {
                echo ($arr[$i][$j] . " " );
            }
            echo ("\n");
        }
    }
}
  
// Driver Code
$str = "PICTURE";
carveCross($str);
      
// This code is contributed 
// by Shivi_Aggarwal 
?>


Javascript




<script>
  
// JavaScript program to print the
// string in 'plus' pattern
  
const max = 100
  
// Function to make a cross in the matrix
function carveCross(str)
{
    let 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.*/
        document.write("Not possible. Please enter odd length string.","</br>");
    }
    else {
  
        // declaring a 2D array i.e a matrix
        let arr = new Array(max);
        for(let i=0;i<max;i++){
            arr[i] = new Array(max);
        }
        let m = Math.floor(n / 2);
  
        /* Now, we will fill all the
        elements of the array with 'X'*/
        for (let i = 0; i < n; i++) {
            for (let 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 (let 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(let 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 (let i = 0; i < n; i++) {
            for (let j = 0; j < n; j++) {
                document.write(arr[i][j] + " ");
            }
            document.write("</br>");
        }
    }
}
  
// driver code
  
let str = "PICTURE";
carveCross(str);
  
// This code is contributed by shinjanpatra
</script>


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

Time Complexity : O(n2)
Auxiliary Space: O(MAX2) where MAX is a defined constant

This article is contributed by Aarti_Rathi. If you like neveropen and would like to contribute, you can also write an article using write.neveropen.co.za or mail your article to review-team@neveropen.co.za. See your article appearing on the neveropen main page and help other Geeks. 

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

Nango Kalahttps://www.kala.co.za
Experienced Support Engineer with a demonstrated history of working in the information technology and services industry. Skilled in Microsoft Excel, Customer Service, Microsoft Word, Technical Support, and Microsoft Office. Strong information technology professional with a Microsoft Certificate Solutions Expert (Privet Cloud) focused in Information Technology from Broadband Collage Of Technology.
RELATED ARTICLES

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Most Popular

Recent Comments