Table of Contents
Given a string of odd length, write a function that will print the string in X format as show below
Example
INPUT
s = “abcde”
OUTPUT
a e
b d
c
b d
a e
Algorithm
1. Traverse the string with two varaiables, i and j, where i is increasing and j is decreasing
2. Print the upper part ie, if(i<j)
a. Print i spaces
b. print ith character
c. Print j-i-1 spaces
d. Print jth character
3. Print the centre point ie, if(i==j)
a. Print i spaces
b. Print middle character
4. Print the lower part ie, if(i>j)
a. Print j spaces
b. print ith character
c. Print j-i-1 spaces
d. Print jth character
C++ Program
#include<iostream>
using namespace std;
// Function to print given string in cross pattern
// Length of string must be odd
void printXFormat(string s)
{
int len = s.length();
// i varaible from start to end, j from end to start
for (int i=0,j=len-1; i<=len,j>=0; i++,j--)
{
//Printing upper part, ie till middle element
if (i<j)
{
// Print i spaces
for (int x=0; x<i; x++)
cout << " ";
// Print i'th character
cout << s[i];
// Print j-i-1 spaces
for (int x=0; x<j-i-1; x++)
cout << " ";
// Print j'th character
cout << s[j] << endl;
}
// To print center point
if (i==j)
{
// Print i spaces
for (int x=0; x<i; x++)
cout << " ";
// Print middle character
cout << s[i] << endl;
}
// To print lower part
else if (i>j)
{
// Print j spances
for (int x = j-1; x>=0; x--)
cout << " ";
// Print j'th character
cout << s[j];
// Print i-j-1 spaces
for (int x=0; x<i-j-1; x++)
cout << " ";
// Print i'h character
cout << s[i] << endl;
}
}
}
int main()
{
printXFormat("abcde");
return 0;
}