Type-1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Type-2 * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Type-1
இதை கீழ்க்கண்டவாறு கவனியுங்கள்
* s s s s s s s * * * s s s s s * * * * * s s s * * * * * * * s * * * * * * * * * * * * *
மேலே கொடுக்கப்பட்டுள்ளவையில் n=5. அதே போல் s என்பது space-ஐ குறிக்கும். இதில் ஒவ்வொரு row-விழும் space-க்கு முன்பாகவும் பின்பாகவும் ஒரே number of stars-தான் print செய்யப்பட்டுள்ளது. ஆகையால் star print செய்யப்படும் logic ஒன்றுதான் ஆனால் space-க்கு முன்பு space-க்கு பின்பு என இருமுறை பயன்படுத்திக்கொள்ளவேண்டும்.
இப்பொழுது print ஆகும் no. of stars ஆனது space-க்கு முன்னும் பின்னும் முதல் row-ல் 1, 2-வது row-ல் 2, 3-வது row-ல் 3, 4-வது row-ல் 4. ஆனால் 5-வது row-ல் மட்டும் 0 space வருவதால் before 5 + after 5 = 10 என்று print ஆகாமல் 9-ஆக print ஆகின்றது. ஆகவே இந்த கடைசி row-விற்கு மட்டும் தனியான print logic, கடைசியில் தான் எழுதவேண்டும். ஆகவே முதல் 4 row-விற்கு மட்டும் loop சுற்றினால் போதுமானது. அதாவது row 1 லிருந்து துவங்கி (n-1)-ல் முடியவேண்டும்.
மத்தியில் உள்ள space-ஐ கவனியுங்கள். இவை அனைத்தும் odd numbers 7,5,3,1,0 என முடிகிறது. இதற்க்கு logic row-ன் values-ஐ அடிப்படையாக கொண்டு எழுதவேண்டும். அப்பொழுது தான் ஒவ்வொரு row-விற்கும் odd number of space வரும். இப்பொழுது logic-ஐ கண்டறியவேண்டும். அதாவது முதல் row-ல் (i.e row=1) நமக்கு வரவேண்டிய space 7. இதை கொடுக்கப்பட்டுள்ள row-ன் values-ஐ வைத்து தான் கொண்டுவரவேண்டும். ஆனால் நமக்கு கொடுக்கப்பட்டுள்ள இன்னொரு hint is n=5. ஆகவே n-ஐ 2-ஆல் multiply செய்து, row-ஐ 2-ஆல் multiply செய்து கழித்துவிடுங்கள். பிறகு அதில் 1-ஐ add செய்துகொள்ளுங்கள். அதாவது (2*n-2*row)+1. இது ஒவ்வொரு row-விற்கு தேவையான space-ஐ தந்துவிடும். ஆகவே space ன் loop ஆனது 1-லிருந்து துவங்கி (2*n-2*row)+1 முடியவேண்டும்.
கடைசி row-ல் எப்பொழுதும் (n*2)-1 stars தான் print ஆகும். ஆகவே loop ஆனது 1 லிருந்து (n*2)-1ல் முடிந்தால் போதுமானது.
for(row=1;row<=n-1;row++){ for(col=1;col<=row;col++){ Logic to print stars here.. } for(s=1;s<=(2*n-2*row)-1;s++){ Logic to print space here.. } for(col=1;col<=row;col++){ Same Logic to print stars here.. } printf("\n"); } for(p=1;p<=(2*n)-1;p++){ Logic to print last row stars here.. }
Complete Program
#include<stdio.h>
#include<conio.h>
int main(){
int n,row,col,s,p;
printf("Enter how many rows you want: ");
scanf("%d",&n);
//row should end with n-1 its important
for(row=1;row<=n-1;row++){
//print stars
for(col=1;col<=row;col++){
printf("*");
}
//print space
for(s=1;s<=(2*n-2*row)-1;s++){
printf(" ");
}
//print stars
for(col=1;col<=row;col++){
printf("*");
}
printf("\n");
}
//print last row stars
for(p=1;p<=(2*n)-1;p++){
printf("*");
}
return 0;
}
Enter how many rows you want: 5
* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Type-2
இதை கீழ்க்கண்டவாறு கவனியுங்கள்
* * * * * * * * * * * * * s * * * * * * * s s s * * * * * s s s s s * * * s s s s s s s *
Type-1ன் logic-ஐ தலைகீழாக செய்வதே Type-2. அதாவது கடைசி row-ல் print செய்யகூடிய stars இப்பொழுது முதல் row-லே print செய்யவேண்டும். அதே போல் row-ன் value n-1ல் துவங்கி 1-ல் முடியவேண்டும்
for(p=1;p<=(2*n)-1;p++){ Logic to print first row stars here.. } printf("\n"); for(row=n-1;row>=1;row--){ for(col=1;col<=row;col++){ Logic to print stars here.. } for(s=1;s<=(2*n-2*row)-1;s++){ Logic to print space here.. } for(col=1;col<=row;col++){ Same Logic to print stars here.. } printf("\n"); }
Complete Program
#include<stdio.h>
#include<conio.h>
int main(){
int n,row,col,s,p;
printf("Enter how many rows you want: ");
scanf("%d",&n);
//print first row stars
for(p=1;p<=(2*n)-1;p++){
printf("*");
}
printf("\n");
//row should start with n-1 end with 1. its important
for(row=n-1;row>=1;row--){
//print stars
for(col=1;col<=row;col++){
printf("*");
}
//print space
for(s=1;s<=(2*n-2*row)-1;s++){
printf(" ");
}
//print stars
for(col=1;col<=row;col++){
printf("*");
}
printf("\n");
}
return 0;
}
Enter how many rows you want: 5
* * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Pgcomments
இது பற்றிய தங்களின் கருத்துகளை இங்கே பதிவிடுங்கள் . இது பயனுள்ளதாக விரும்பினால் மற்றவர்களுக்கும் இதை share செய்யுங்கள்.
Comments