Sunday, August 17, 2014

Adventure of FOR LOOPS for Beginners

Most of students who doing studies in software engineering field most probably face FOR LOOP challenges in beginning of their academic life. I think most of student get trouble, because they try to start coding without analyzing the problem. In this post I decide to introducing some tips for solve these kind of problems.

  1. Let’s think we have a problem like this.


  2. Before we start the coding we should clearly analyzing the position of the stars and the positions of the spaces. In order to do that I think better to doing some rough work like this.(You can easily sketch a draft using word processing software like MS Office.)


 Ok Let’s go through the draft.

a.       I think you have some idea about how to create the basic star triangle, basically we need two for loops to crate triangle.

                                                               i.      Main For Loop

For maintain horizontal view of the triangle.

                                                             ii.      Secondary For Loop(s)

Always inside the Main for loop, this would be handle the vertical view of the triangle. In basic level mostly we can see only one secondary for loop, But in the advanced triangle problem’s like this we should add more than one secondary  for loop.

b.      Ok, let’s consider main for loop.

I mention main for loop is always maintain the horizontal view of the triangle. In this problem also the same. We can easily define a for loop for handle a height of the triangle.

for(i=1;i<=h;i++)
            {
}

c.       Secondary for loop(s)

Let’s consider first row of the draft.


If you clearly analyze the draft you can see four major parts of the vertical view of the draft. Those are space(s), filling cell(s), space(s) & filing cell(s).
When we consider the whole draft we can easily understand increasing and decreasing of these spaces(s) and the filing cell(s).  

Let’s go through the major parts of the vertical view.

                                                               i.      Space(s) I

This part follow decreasing pattern (2,1,0). It’s a arithmetic series decreasing values one by one in each step.
And also I’ll numbering each row 1 to 3, from top to bottom. My target is get the equation of the space(s) and row numbers.

In 1st row 2 spaces.
In 2nd row 1 spaces.
In 3rd roe 0 spaces.

I think you catch the pattern. In each row we should print the spaces following this equation.

Height of row – Row Number = Number of spaces

I’ll put first secondary for loop for handle this.

for(j=h-i;j>=1;j--)
                        {
                                        printf(" ");
                        }

                                                             ii.      Filing cell(s) / Star(s)

This part follow increasing pattern (1,3,5). It’s also arithmetic series increasing values two by two in each step.
I’ll numbering each row 1 to 3, from top to bottom again. My target is same as the first step. It’s for get the equation of the filing cell(s) and row numbers.

In 1st row 1 spaces.
In 2nd row 3 spaces.
In 3rd roe 5 spaces.

I think you catch the pattern. In each row we should print the stars following this equation.

Row Number + Row Number - 1= Number of stars

I’ll put second secondary for loop for handle this.

for(k=i+(i-1);k>=1;k--)
                        {
                                        printf("*");
                        }

                                                            iii.      Space(s) II

This part follow decreasing pattern (4,2,0). It’s a arithmetic series decreasing values two by two in each step.
And also I’ll numbering each row 1 to 3, from top to bottom. My target is get the equation of the space(s) and row numbers.

In 1st row 4 spaces.
In 2nd row 2 spaces.
In 3rd roe 0 spaces.

I think you catch the pattern. In each row we should print the spaces following this equation.

(Height of row – Row Number) * 2 = Number of spaces

I’ll put first secondary for loop for handle this.

for(l=(h-i)*2;l>=1;l--)
                        {
                                        printf(" ");
                        }

                                                           iv.      Filing cell(s) / Star(s)

This part follow increasing pattern (1,3,5). It’s also arithmetic series increasing values two by two in each step.
I’ll numbering each row 1 to 3, from top to bottom again. My target is same as the first step. It’s for get the equation of the filing cell(s) and row numbers.

In 1st row 1 spaces.
In 2nd row 3 spaces.
In 3rd roe 5 spaces.

I think you catch the pattern. In each row we should print the stars following this equation.

Row Number + Row Number - 1= Number of stars

I’ll put second secondary for loop for handle this.

for(k=i+(i-1);k>=1;k--)
                        {
                                        printf("*");
                        }

d.      New Line

After each row we should print a new line(\n). In order to do that we will put a
printf("\n");
code for bottom of the secondary for loops.

Here’s the final code for this problem.

int main(void)
{
 int i=0;
 int j=0;
 int k=0;
 int l=0;
 int m=0;
 int h=0;
 
 printf("Enter hight of tree: ");
 scanf("%d",&h);
 
 for(i=1;i<=h;i++)
 {
  for(j=h-i;j>=1;j--)
  {
   printf(" ");
  }
  
  for(k=i+(i-1);k>=1;k--)
  {
   printf("*");
  }
  
  for(l=(h-i)*2;l>=1;l--)
  {
   printf(" ");
  }
  
  for(m=i+(i-1);m>=1;m--)
  {
   printf("*");
  }
  
  printf("\n");  
 }
}
I think you got some idea about how to solve these kind of problems. Now you can try different pattern by yourself.

Happy Coding……………………

No comments:

Post a Comment