Qn: Write the C program logic to print the triangle pattern as follows
  Type-1           Type-2
        1                1
      1 2              2 1
    1 2 3            3 2 1
  1 2 3 4          4 3 2 1
1 2 3 4 5        5 4 3 2 1

 Type-3           Type-4
1 2 3 4 5        5 4 3 2 1
  1 2 3 4          4 3 2 1
    1 2 3            3 2 1
      1 2              2 1
        1                1
-By Admin, Last Update On 28th May,2019 06:05 pm

Type-1

மேலே கொடுக்கப்பட்டுள்ள type-1-ஐ நன்கு கவனித்தால். n=5 அதாவது number of rows. முதல் row-வில் ஒரு column, இரண்டாவது row-வில் இரண்டு column, இதுபோன்று, ஒவ்வொரு row-விற்கும் இணையான columns-ஐ பெற்றுள்ளது. அதோடு ஒவ்வொரு number-ம் print செய்வதற்கு முன்பாக blank space print செய்யப்பட்டுள்ளது. Type-1-ஐ கீழ்க்கண்டவாறு கவனியுங்கள்.

s s s s 1
s s s 1 2
s s 1 2 3
s 1 2 3 4
1 2 3 4 5

இதில் s என்பது blank space-ஐ குறிக்கும். முதலில் numbers எவ்வாறு print செய்யவேண்டும் என்ற logic-ஐ கொடுத்துவிட்டால், அதற்க்கு முன்பாக blank space-க்கான logic-ஐ கொடுப்பது மிகவும் எளிதானது. இப்பொழுது number-ஐ print செய்ய இரண்டு for() loop பயன்படுத்தபடுகிறது. முதல் for() loop எதனை row வரவேண்டும் என்பதர்க்ககவும். இரண்டாவது for() loop ஒவ்வொரு row-விழும் எதனை column வரவேண்டும் என்பதர்க்ககவும் பயன்படுத்தபடுகிறது. ஆகையால் தான் column-ஐ print செய்யகூடிய for() loop எப்பொழுதும், முதல் for() loop-க்கு உள்ளே கொடுக்கபடவேண்டும்.

for(row=1;row<=n;row++){
  for(col=1;col<=row;col++){
      printf("%d ",col);
  }
  printf("\n");
}

row, 1-லிருந்து துவங்கி n-ல் முடியவேண்டும். அதேபோல் col, 1-லிருந்து துவங்கி row-ன் value என்னவோ அதில் தான் முடியவேண்டும். இவ்வாறு செய்யும்போதுதான் type-1-ல் உள்ளவாறு number print ஆகும்.

இப்பொழுது இந்த இரண்டு for() loop-களுக்கும் இடையில் blank space print செய்வதற்கான logic-ஐ கொடுத்துவிட்டால் நமக்கு தேவையான output கிடைத்துவிடும். இதில் முதல் row-ல் நான்கு space, இரண்டாவது row-ல் மூன்று space,மூன்றாவது row-ல் இரண்டு space,நான்காவது row-ல் ஒரு space, ஐந்தாவது row-ல் 0 space. ஆகவே space ஆனது row-ஐ பொருத்து குறைந்துகொண்டே வருகிறது.

இவ்வாறு print செய்ய for() loop-ஆனது 1-ல் துவங்கி (n-row)-ல் முடியவேண்டும். ஏனெனில் முதல் row-ல் நான்கு space வரவேண்டும். ie n=5 and row=1 so (5-1)=4, இதேபோல் இரண்டாவது row-ல் மூன்று space வரவேண்டும். ie n=5 and row=2 (5-2)=3, இதே போன்று ஒவ்வொரு row-விழும் இவ்வாறு print செய்துவிடும்.

for(row=1;row<=n;row++){
    for(s=1;s<=(n-row);s++){
       printf(" ");
    }
    for(col=1;col<=row;col++){
        printf("%d ",col);
    }
    printf("\n");
}

Complete Program

#include<stdio.h>
#include<conio.h>
int main(){
  int n,row,col,s;
  printf("Enter how many rows you want: ");
  scanf("%d",&n);
  for(row=1;row<=n;row++){
    for(s=1;s<=(n-row);s++){
      printf(" ");
    }
    for(col=1;col<=row;col++){
       printf("%d",col);
    }
    printf("\n");
  }
return 0;
}
Enter how many rows you want: 5
        1
      1 2
    1 2 3
  1 2 3 4
1 2 3 4 5

"col" variable print செய்வதற்கு பதிலாக "*" ஐ print செய்தால் கீழே உள்ள output கிடைத்துவிடும்

        *
      * *
    * * *
  * * * *
* * * * *

Type-2

Type-2ம் Type-1 program-ல் உள்ள அதே logic தான். ஆனால் col ஆனது 1-லிருந்து துவங்குவதற்கு பதிலாக row-ன் value-லிருந்து துவங்கி 1-ல் முடிக்கவேண்டும்.

Complete Program

#include<stdio.h>
#include<conio.h>
int main(){
  int n,row,col,s;
  printf("Enter how many rows you want: ");
  scanf("%d",&n);
  for(row=1;row<=n;row++){
    for(s=1;s<=(n-row);s++){
      printf(" ");
    }
    for(col=row;col>=1;col--){
      printf("%d",col);
    }
    printf("\n");
  }
return 0;
}
Enter how many rows you want: 5
        1
      2 1
    3 2 1
  4 3 2 1
5 4 3 2 1

"col" variable print செய்வதற்கு பதிலாக "$" ஐ print செய்தால் கீழே உள்ள output கிடைத்துவிடும்

        $
      $ $
    $ $ $
  $ $ $ $
$ $ $ $ $

Type-3

Type-3ம் Type-1 program-ல் உள்ள அதே logic தான். ஆனால் row ஆனது 1-லிருந்து துவங்குவதற்கு பதிலாக n-லிருந்து துவங்கி 1-ல் முடிக்கவேண்டும். மற்றவையெல்லாம் தானாகவே மாற்றிக்கொள்ளும். ஏனெனில் மற்ற இரண்டு for() loop-களும் row-ன் value-ஐ வைத்துதான் செயல்படுகிறது. ஆகையால் row-ன் value மாறினாலே இவற்றின் value-களும் தானாக மாறிக்கொள்ளும்.

#include<stdio.h>
#include<conio.h>
int main(){
  int n,row,col,s;
  printf("Enter how many rows you want: ");
  scanf("%d",&n);
  for(row=n;row>=1;row--){
    for(s=1;s<=(n-row);s++){
       printf(" ");
    }
    for(col=1;col<=row;col++){
     printf("%d",col);
    }
   printf("\n");
  }
return 0;
}
Enter how many rows you want: 5
1 2 3 4 5
  1 2 3 4
    1 2 3
      1 2
        1

"col" variable print செய்வதற்கு பதிலாக "*" ஐ print செய்தால் கீழே உள்ள output கிடைத்துவிடும்

* * * * *
  * * * *
    * * *
      * *
        *

Type-4

Type-4ம் Type-1 program-ல் உள்ள அதே logic தான். ஆனால் row ஆனது 1-லிருந்து துவங்குவதற்கு பதிலாக n-லிருந்து துவங்கி 1-ல் முடிக்கவேண்டும். அதேபோல் col ஆனது 1-லிருந்து துவங்குவதற்கு பதிலாக row-ன் value-லிருந்து துவங்கி 1-ல் முடிக்கவேண்டும்.

#include<stdio.h>
#include<conio.h>
int main(){
  int n,row,col,s;
  printf("Enter how many rows you want: ");
  scanf("%d",&n);
  for (row = n; row >=1; row--) {
    for (s = 1; s <= (n - row); s++) {
     printf(" ");
    }
    for (col = row; col >= 1; col--) {
      printf("%d",col);
    }
    printf("\n");
  }
return 0;
}
Enter how many rows you want: 5
5 4 3 2 1
  4 3 2 1
    3 2 1
      2 1
        1

"col" variable print செய்வதற்கு பதிலாக "@" ஐ print செய்தால் கீழே உள்ள output கிடைத்துவிடும்

@ @ @ @ @
  @ @ @ @
    @ @ @
      @ @
        @

Pgcomments

Comments