The printing of patterns is the most common and interesting problem. This C program prompts users to input their names and transform each letter of the name into a visually appealing big star pattern.
For Example,
Input: NAME
Output:
* * **** * * ******
** * * * ** ** *
* * * ****** * ** * ****
* ** * * * * *
* * * * * * ******Approach
- The approach is to define the pattern for each alphabet.
- After designing the pattern, the user is asked to enter their name.
- For each character in their name, we print the corresponding pattern finally resulting in the name pattern.
We will use the switch statements, arrays and string parting in this program.
C Program to Print Name Pattern
// C program to print Name is start pattern
#include <stdio.h>
#include <string.h>
void printStars(int s) // this function will give a line of
// stars required
{
int i;
for (i = 0; i < s; i++) {
printf("*");
}
}
void printSpaces(int s) // this function will give a line of
// spaces required
{
int i;
for (i = 0; i < s; i++) {
printf(" ");
}
}
void nl()
{
printf("\t");
} // gives New Tab space between Letters
void newLine() { printf("\n"); } // gives new Tab space
int main()
{
int i;
char n[50];
printf("Hello, user\n");
printf("please enter your name ");
warning:
printf("(must be in upper case) : ");
nl();
fgets(n, sizeof(n), stdin);
// Removing the newline character at the end, if present
size_t length = strlen(n);
if (length > 0 && n[length - 1] == '\n') {
n[length - 1] = '\0';
}
for (i = 0; i < strlen(n); i++) {
if ('a' <= n[i] && n[i] <= 'z') {
goto warning;
}
}
newLine();
//-----------1st Line of Letter-----------
for (i = 0; i < strlen(n); i++) {
switch (n[i]) {
case 'A':
case 'C':
case 'O':
case 'Q':
case 'G':
nl();
printSpaces(1);
printStars(4);
printSpaces(1);
break;
case 'B':
case 'D':
case 'P':
case 'R':
nl();
printStars(5);
printSpaces(1);
break;
case 'E':
case 'F':
case 'T':
case 'Z':
case 'I':
case 'J':
nl();
printStars(6);
break;
case 'Y':
case 'U':
case 'H':
case 'K':
case 'X':
case 'V':
case 'N':
case 'M':
nl();
printStars(1);
printSpaces(4);
printStars(1);
break;
case 'W':
nl();
printStars(1);
printSpaces(4);
printStars(1);
break;
case 'L':
nl();
printStars(1);
break;
case 'S':
nl();
printSpaces(1);
printStars(5);
break;
case ' ':
nl();
}
}
newLine();
//-----------2nd Line of Letter-----------
for (i = 0; i < strlen(n); i++) {
switch (n[i]) {
case 'A':
case 'U':
case 'H':
case 'D':
case 'B':
case 'O':
case 'V':
case 'R':
case 'P':
case 'Q':
nl();
printStars(1);
printSpaces(4);
printStars(1);
break;
case 'I':
case 'J':
case 'T':
nl();
printSpaces(3);
printStars(1);
break;
case 'L':
case 'E':
case 'C':
case 'F':
case 'G':
nl();
printStars(1);
break;
case 'K':
nl();
printStars(1);
printSpaces(3);
printStars(1);
break;
case 'S':
nl();
printStars(1);
printSpaces(5);
break;
case 'X':
case 'Y':
nl();
printSpaces(1);
printStars(1);
printSpaces(2);
printStars(1);
printSpaces(1);
break;
case 'Z':
nl();
printSpaces(4);
printStars(1);
printSpaces(1);
break;
case 'M':
nl();
printStars(2);
printSpaces(2);
printStars(2);
break;
case 'W':
nl();
printStars(1);
printSpaces(4);
printStars(1);
break;
case 'N':
nl();
printStars(2);
printSpaces(3);
printStars(1);
break;
case ' ':
nl();
}
}
newLine();
//-----------3rd Line of Letter-----------
for (i = 0; i < strlen(n); i++) {
switch (n[i]) {
case 'A':
case 'H':
nl();
printStars(6);
break;
case 'B':
case 'R':
case 'P':
nl();
printStars(4);
break;
case 'C':
nl();
printStars(1);
break;
case 'D':
case 'O':
case 'U':
nl();
printStars(1);
printSpaces(4);
printStars(1);
break;
case 'E':
case 'F':
nl();
printStars(4);
break;
case 'G':
nl();
printStars(1);
printSpaces(3);
printStars(2);
break;
case 'J':
case 'I':
case 'T':
case 'Z':
nl();
printSpaces(3);
printStars(1);
printSpaces(2);
break;
case 'X':
case 'Y':
nl();
printSpaces(2);
printStars(2);
printSpaces(2);
break;
case 'S':
nl();
printSpaces(1);
printStars(4);
printSpaces(1);
break;
case 'K':
nl();
printStars(3);
break;
case 'V':
nl();
printStars(1);
printSpaces(4);
printStars(1);
break;
case 'Q':
case 'N':
nl();
printStars(1);
printSpaces(2);
printStars(1);
printSpaces(1);
printStars(1);
break;
case 'M':
case 'W':
nl();
printStars(1);
printSpaces(1);
printStars(2);
printSpaces(1);
printStars(1);
break;
case 'L':
nl();
printStars(1);
printSpaces(5);
break;
case ' ':
nl();
}
}
newLine();
//-----------4th Line of Letter----------------------
for (i = 0; i < strlen(n); i++) {
switch (n[i]) {
case 'A':
case 'B':
case 'D':
case 'U':
case 'G':
case 'O':
case 'H':
nl();
printStars(1);
printSpaces(4);
printStars(1);
break;
case 'E':
case 'C':
case 'F':
case 'P':
case 'L':
nl();
printStars(1);
break;
case 'I':
case 'T':
case 'Y':
nl();
printSpaces(3);
printStars(1);
break;
case 'J':
nl();
printStars(1);
printSpaces(2);
printStars(1);
break;
case 'K':
case 'R':
nl();
printStars(1);
printSpaces(3);
printStars(1);
break;
case 'S':
nl();
printSpaces(5);
printStars(1);
break;
case 'V':
nl();
printSpaces(1);
printStars(1);
printSpaces(2);
printStars(1);
printSpaces(1);
break;
case 'X':
nl();
printSpaces(1);
printStars(1);
printSpaces(2);
printStars(1);
printSpaces(1);
break;
case 'Z':
nl();
printSpaces(1);
printStars(1);
printSpaces(4);
break;
case 'Q':
nl();
printStars(1);
printSpaces(3);
printStars(1);
printSpaces(1);
break;
case 'M':
nl();
printStars(1);
printSpaces(4);
printStars(1);
break;
case 'W':
nl();
printStars(2);
printSpaces(2);
printStars(2);
break;
case 'N':
nl();
printStars(1);
printSpaces(3);
printStars(2);
break;
case ' ':
nl();
}
}
newLine();
//-----------5th Line of Letter-----------
for (i = 0; i < strlen(n); i++) {
switch (n[i]) {
case 'A':
case 'H':
case 'K':
case 'R':
case 'X':
case 'W':
case 'N':
nl();
printStars(1);
printSpaces(4);
printStars(1);
break;
case 'B':
case 'D':
nl();
printStars(5);
break;
case 'E':
case 'L':
case 'I':
case 'Z':
nl();
printStars(6);
break;
case 'F':
case 'P':
nl();
printStars(1);
break;
case 'C':
case 'S':
case 'G':
case 'O':
case 'U':
nl();
printSpaces(1);
printStars(4);
printSpaces(1);
break;
case 'J':
nl();
printSpaces(1);
printStars(2);
break;
case 'T':
case 'Y':
nl();
printSpaces(3);
printStars(1);
printSpaces(2);
break;
case 'V':
nl();
printSpaces(2);
printStars(2);
printSpaces(2);
break;
case 'Q':
nl();
printSpaces(1);
printStars(3);
printSpaces(1);
printStars(1);
break;
case 'M':
nl();
printStars(1);
printSpaces(4);
printStars(1);
break;
case ' ':
nl();
}
}
newLine();
newLine();
printf("What a beautiful name you have!");
return 0;
}
Output
**** ****** ****** * *
* * * * *
* ** **** **** ***
* * * * * *
**** ****** ****** * *
What a beautiful name you have!
To know more about pattern printing in C refer to pattern programs in c