Qn: Write the C++ program logic to print star * as pyramid shape
  Type-1               Type-2
  
        *          * * * * * * * * *
      * * *          * * * * * * *   
    * * * * *          * * * * *   
  * * * * * * *          * * *    
* * * * * * * * *          *   
-By Admin, Last Update On 11th June,2019 10:41 am

Type-1

இதை நன்றாக கவனித்தால் n=5 rows, முதல் row-ல் 1 star, இரண்டாவது row-ல் 3 stars, மூன்றாவது row-ல் 5 stars, நான்காவது row-ல் 7 stars, ஐந்தாவது row-ல் 9 stars உள்ளது. அதவாவது 1,3,5,7,9,...etc. இவை அனைத்தும் odd numbers. row-ன் number-ஐ பொருத்து stars-ன் எண்ணிக்கையானது மாறுபட்டு கொண்டே இருக்கிறது.

அதே போல் star print செய்வதற்கு முன்பாக spaces print செய்யப்பட்டுள்ளது. அவை முதல் row-ல் 4 , அடுத்து 3,2,1,0 என்று குறைந்துகொண்டே வருகின்றது. இது கீழே கொடுக்கப்பட்டுள்ள pattern-ல் கொடுக்கப்பட்டுள்ளது.

s s s s *
s s s * * *
s s * * * * *
s * * * * * * * 
* * * * * * * * *

முதலில் star print செய்வதற்க்கான logic-ஐ கொடுத்துவிட்டால் பிறகு space print செய்வதற்கான logic-ஐ கொடுப்பது எளிதானது. முதல் for loop-ல் row=1 என்றால் இரண்டாம் for loop 1-ல் முடியவேண்டும். அதேபோல் row=2 என்றால் 3-ல் முடியவேண்டும்,row=3 என்றால் 5, row=4 என்றால் 7, row=5 என்றால் 9-ல் முடியவேண்டும். ஏனெனில் இதை பொருத்து தான் stars print செய்யபடுகிறது.

நமக்கு odd number வேண்டுமெனில் எப்பொழுதும் ஒரு number-ஐ 2-ஆல் multiply செய்து அதில் 1-ஐ கழித்துவிட்டால் odd number கிடைத்துவிடும். ஆகவே இங்கு நாம் (row*2)-1 என்று செய்துவிட்டால் ஒவ்வொரு row-விழும் நமக்கு, 1,3,5,7,9 என்ற odd number கிடைத்துவிடும்.

for(int row=1;row<=n;row++){
    for(int col=1;col<=(row*2)-1;col++){
        cout<<"*";
    }
    cout<<endl;
}

இப்பொழுது இரண்டு for loop-களுக்கு இடையே space-க்கான logic-ஐ கொடுக்கவேண்டும். for loop-ன் condition (n-row) என்று கொடுத்துவிட்டால் ஒவ்வொரு row-க்கும் தேவையான space print செய்துவிடும்.

for(int row=1;row<=n;row++){
     for(int s=1;s<=(n-row);s++){
        printf(" ");
    }
    for(int col=1;col<=(row*2)-1;col++){
      cout<<"*";
    }
    cout<<endl;
}

Complete Program

#include<stdio.h>
#include<conio.h>
int main(){
  int n,row,col,s;
  cout<<"Enter how many rows you want: ";
  cin>>n;
  for(row=1;row<=n;row++){
      for(s=1;s<=(n-row);s++){
          cout<<" ";
      }
      for(col=1;col<=(row*2)-1;col++){
         cout<<"*";
      }
      cout<<endl;
  }
return 0;
}
Enter how many rows you want: 5
        *        
      * * *      
    * * * * *    
  * * * * * * *  
* * * * * * * * *

Type-2

இதுவும் type-1 logic-ன் அடிபடையில் தான் செயல்படுகிறது. இதற்க்கு row 1-லிருந்து துவங்குவதற்கு பதிலாக n-லிருந்து துவங்கி 1-ல் முடியவேண்டும். இப்பொழுது type-1-ன் output அப்படியே தலைகீழாக மாறிவிடும். ஏனெனில் உள்ளே இருக்கும் இரண்டு for loop-களும் row-ன் value-ஐ அடிப்படையாக கொண்டுதான் செயல்படுகிறது. ஆகையால் row-ன் values மாறினால் total structure மாறிவிடுகிறது.

Complete Program

#include<stdio.h>
#include<conio.h>
int main(){
  int n,row,col,s;
  cout<<"Enter how many rows you want: ";
  cin>>n;
  for(row=n;row>=1;row--){
      for(s=1;s<=(n-row);s++){
          cout<<" ";
      }
      for(col=1;col<=(row*2)-1;col++){
         cout<<"*";
      }
      cout<<endl;
  }
return 0;
}
Enter how many rows you want: 5
* * * * * * * * *
  * * * * * * *  
    * * * * *   
      * * *    
        *   

Pgcomments

Comments