Number pattern 17 in C

Write a C program to print the given number pattern using for loop. How to print the given pattern of m rows and n columns using for loop in C programming. Logic to print the given number pattern using loop in C program.

Example

Input

Input N: 5

Output

555555555
544444445
543333345
543222345
543212345
543222345
543333345
544444445
555555555

Required knowledge

Basic C programming, Loop

Logic to print the given number pattern

Before you get into this confusing but interesting number pattern I recommend you to get yourself acquainted with the basics of number printing, learn the basic logic to print number pattern.

Once you get acquainted with basics of number pattern printing, have a careful eye on to above pattern. Let me help you, to make things easier lets divide this entire pattern into two big parts and six smaller pieces. The first upper half contains three parts

And the lower half of the pattern also contains three separate parts.

Now, both upper and lower half’s of the pattern would be printed separately in two separate outer loops. Considering the first upper half of the pattern. The logic to print upper half of the pattern:

  1. To iterate through rows, initialize a loop from N till 1. (Note: We can also use loop from 1 to N but we have used it in decrementing order as the upper half is in decrementing order)
  2. To print the first part of upper half, run an inner loop from N to 1 and print the current column number.
  3. To print the second part of the upper half, run another inner loop from 1 to i*2-1 which is the total number of columns per row in this part. Inside this loop print the current row number.
  4. To print the third part of the upper half, run another inner loop from current_row till N and print column number inside this loop.

Now, once you have printed the upper half of the pattern its time to get into lower half of the pattern. Logic to print the lower half of the pattern is

  1. To iterate through rows, run a loop from 1 to N.
  2. To print the first inner part of the lower half, run a loop from N to 1. Inside this loop print the column number.
  3. To print the second inner part of the lower half, run another loop from 1 to i*2-1 which is the total number of columns per row in this part. Inside this loop print current row number + 1.
  4. Finally to print the last inner part of lower half, run another loop from current row + 1 till N. Inside this loop print the current column number.

After this much of fuss finally you are done, lets now implement both logic into one program.

Program to print the given number pattern

/**
 * C program to print number pattern
 */

#include <stdio.h>

int main()
{
    int N, i, j;

    printf("Enter N: ");
    scanf("%d", &N);

    // First upper half of the pattern
    for(i=N; i>=1; i--)
    {
        // First inner part of upper half
        for(j=N; j>i; j--)
        {
            printf("%d", j);
        }

        // Second inner part of upper half
        for(j=1; j<=(i*2-1); j++)
        {
            printf("%d", i);
        }

        // Third inner part of upper half
        for(j=i+1; j<=N; j++)
        {
            printf("%d", j);
        }

        printf("\n");
    }

    // Second lower half of the pattern
    for(i=1; i<N; i++)
    {
        // First inner part of lower half
        for(j=N; j>i; j--)
        {
            printf("%d", j);
        }

        // Second inner part of lower half
        for(j=1; j<=(i*2-1); j++)
        {
            printf("%d", i+1);
        }

        // Third inner part of lower half
        for(j=i+1; j<=N; j++)
        {
            printf("%d", j);
        }

        printf("\n");
    }

    return 0;
}

Output

Enter N: 5
555555555
544444445
543333345
543222345
543212345
543222345
543333345
544444445
555555555

Happy coding 😉