GfG QA is closing soon... Please refer PRACTICE or GfG now on wards !!

C program to print a Trapezium pattern of numbers,stars and hyphens..

I am trying to write a C program to print the following pattern based on user input.

For eg: If N=4 the code should print the following pattern.
1*2*3*4*17*18*19*20
--5*6*7*14*15*16
----8*9*12*13
------10*11

Again if N=5 the code should print

1*2*3*4*5*26*27*28*29*30
--6*7*8*9*22*23*24*25
----10*11*12*19*20*21
------13*14*17*18
--------15*16

For N=2 the pattern will be

1*2*5*6
--3*4

But I an unable to come up with a program logic...help...

progress till now.....

#include <stdio.h>
void pattern(int);
int main()
{
    int n;
    scanf("%d",&n);
    pattern(n);
    return 0;
}
void pattern(int n)
{
    int i,j,k;
    for(i=1;i<n;i++)
    {
        
    }
}

 

 

asked Jan 16, 2016 by dmaneesh7
edited Jan 16, 2016 by dmaneesh7

8 Answers

#include <stdio.h>
void pattern(int);

int main()
{
    int n;
    scanf("%d", &n);
    pattern(n);
    return 0;
}

void pattern(int n)
{
    int i, j, k, s;
    int a = 1;
    int b = n*n + 1;
    for (i = n; i >= 1; i--)
    {
		for (s = 0; s < n - i; s++)
			printf(" ");
		
		for (j = 0; j < i; j++)
			printf("%d*", a++);
		
		for (k = 0; k < i - 1; k++)
			printf("%d*", b++);
		
		printf("%d\n", b);				//	last b should without *
		
		b -= 2*(i - 1);
    }
}

 

answered Jan 16, 2016 by utkarsh111

thank you....

above answer with hypen in place of space..

#include <stdio.h>
void pattern(int);

int main()
{
	int n;
	scanf("%d", &n);
	pattern(n);
	return 0;
}

void pattern(int n)
{
	int i, j, k, s;
	int a = 1;
	int b = n*n + 1;
	for (i = n; i >= 1; i--)
	{
		for (s = 0; s < n - i; s++)
			printf("--");
		
		for (j = 0; j < i; j++)
			printf("%d*", a++);
		
		for (k = 0; k < i - 1; k++)
			printf("%d*", b++);
		
		printf("%d\n", b);			 // last b should without *
		
		b -= 2*(i - 1);
	}
}

Credit=utkarsh111

answered Jan 16, 2016 by dmaneesh7

int n;

scanf("%d", &n);
int k=n;
int v=(n*n+n);
int o=1;
for(int i=1;i<=n;i++)
{
   int u=v-k;
    v=u;
    
for(int j=1;j<=k*2;j++)
{
   
   if(j>k)
   {
   u=u+1;
   printf("%d",u);
   }
   else
   {
   printf("%d",o);
   o=o+1;
   }

}
k=k-1;
printf("\n ");
}

answered May 7, 2016 by Rahul Bhatvedekar

#include<stdio.h>

int main() {
        int input;
        int i,j,temp,count = 1,space;
        scanf("%d", &input);

        for(i = 0; i < input; i++) {
                temp = count;
                space = i;
                while(space-- > 0)
                        printf(" ");
                for(j = 0; j < (input-i); j++) {
                        printf("%d*", count++);
                }
                for(j = 0; j < (input-i); j++) {
                        printf("%d*", temp + (input-i) * (input-i) + j );
                }
                printf("\n");
        }

        return 1;
}

answered May 7, 2016 by Gopalki
edited May 7, 2016

package temp;

import java.util.Scanner;

public class Trapezium_Pattern {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("Enter n :");
        Scanner sc=new Scanner(System.in);
        int n=sc.nextInt();
        int count=1;
        
        for(int i=1;i<=n;i++)
        {
            int space=i-1;
            while(space!=0)
            {
                System.out.print("__");
                space--;
            }
            for(int j=1;j<=n-i+1;j++)
            {
                System.out.print(count+++"*");
                
            }
            int count2=(n*(n+1))/2+((n-i)*(n-i+1))/2+1;
            for(int k=1;k<=n-i+1;k++)
            {
                System.out.print(count2++);
                if(k!=n-i+1)
                    System.out.print("*");
            }
            System.out.println();
        }

    }

}

answered Jul 2, 2016 by Jatin

import java.util.Scanner;


public class trapezium {
    public static void main(String ar[]){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int i = 1;
        int j = n*(n+1);
        
        for(int r = 0;r<n;r++){
            for(int s = 0;s<2*(r);s++){
                System.out.print("-");
            }
            for(int s = 0;s<(n-r);s++){
                System.out.print((i++)+"*");
            }
            for(int s = (n-r);s>1;s--){
                System.out.print((j-s+1)+"*");
            }
            System.out.println(j+"");
            j = j - (n-r);
        }        
    }
}

answered Nov 25, 2016 by vaibhav Mittal

public class Pattern {
    public static void main(String[] args) {
        int n = 4;
        int count = 1; int tmpCount= (n * n) + 1 + n; int tmp=0;
        for(int i=0; i< n; i++){
            int h;
            for(h = 0; h < i; h++){
                System.out.print("--");
            }
            for(int j = h; j < (n*2) - h; j++){
                if(j == n){
                    tmp = count;
                    count = tmpCount;
                }
                System.out.print(count);
                if(j < n)
                        tmpCount -- ;
                if(j < (n*2) - h - 1){
                    System.out.print("*");
                }
                count ++;
            }
            System.out.println();
            count = tmp;
        }
    }
}

 

answered Feb 22, 2017 by jayapra78

I used C++ language to solve the problem.

#include<iostream>

using namespace std;

int main()
{
    int n;
    cin >> n;

    int myCounter = 1;

    for( int ri = 0 ; ri < n ; ri++ )
    {
        for( int ci = 0 ; ci < ri ; ci++ )
            cout << "--";

        for( int ci = 0 ; ci < n-ri ; ci++ )
        {
            cout << myCounter++ << "*";
        }

        int myCounter2 = (n*(n+1)/2) + 1 + ((n-ri-1)*((n-ri-1)+1)/2);
        for( int ci = 0 ; ci < n-ri-1 ; ci++ )
            cout << myCounter2++ << "*";

        cout << myCounter2++ <<endl;
    }
    return 0;
}

 

answered Mar 15, 2017 by vipulchasta
...