Nested Loops in C++

By Daniel Malcolm Viewed: 31846 times Emailed: 209 times Printed: 208 times Bookmark and Share



Loops may be nested, with one loop sitting in the body of another. The inner loop will be executed in full for every execution of the outer loop. This c++ program illustrates writing marks into a matrix using nested for loops.

Illustrates nested for loops.

1:   //
2:   //Illustrates nested for loops
3:
4:   #include <iostream.h>
5:
6:   int main()
7:   {
8:       int rows, columns;
9:       char theChar;
10:       cout << "How many rows? ";
11:       cin >> rows;
12:       cout << "How many columns? ";
13:       cin >> columns;
14:       cout << "What character? ";
15:       cin >> theChar;
16:       for (int i = 0; i<rows; i++)
17:       {
18:          for (int j = 0; j<columns; j++)
19:              cout << theChar;
20:          cout << "\n";
21:       }
22:      return 0;
23: }

Output: How many rows? 4
How many columns? 12
What character? x
xxxxxxxxxxxx
xxxxxxxxxxxx
xxxxxxxxxxxx
xxxxxxxxxxxx

Analysis: The user is prompted for the number of rows and columns and for a character to print. The first for loop, on line 16, initializes a counter (i) to 0, and then the body of the outer for loop is run.
On line 18, the first line of the body of the outer for loop, another for loop is established. A second counter (j) is also initialized to 0, and the body of the inner for loop is executed. On line 19, the chosen character is printed, and control returns to the header of the inner for loop. Note that the inner for loop is only one statement (the printing of the character). The condition is tested (j < columns) and if it evaluates true, j is incremented and the next character is printed. This continues until j equals the number of columns.

Once the inner for loop fails its test, in this case after 12 Xs are printed, execution falls through to line 20, and a new line is printed. The outer for loop now returns to its header, where its condition (i < rows) is tested. If this evaluates true, i is incremented and the body of the loop is executed.

In the second iteration of the outer for loop, the inner for loop is started over. Thus, j is reinitialized to 0 and the entire inner loop is run again.

The important idea here is that by using a nested loop, the inner loop is executed for each iteration of the outer loop. Thus the character is printed columns times for each row.

 


NOTE: As an aside, many C++ programmers use the letters i and j as counting variables. This tradition goes all the way back to FORTRAN, in which the letters i, j, k, l, m, and n were the only legal counting variables. Other programmers prefer to use more descriptive counter variable names, such as Ctrl and Ctr2. Using i and j in for loop headers should not cause much confusion, however.

Scoping in for Loops

You will remember that variables are scoped to the block in which they are created. That is, a local variable is visible only within the block in which it is created. It is important to note that counting variables created in the header of a for loop are scoped to the outer block, not the inner block. The implication of this is that if you have two for loops in the same function, you must give them different counter variables, or they may interfere with one another.




Comments(9)


1. My teacher doesnt teach me right!

By: Anon at 2009-02-20 07:16:08
2. nice///


By: MHARLON ALADEN at 2009-08-14 01:00:09
3. a big thanks!

By: xamae at 2010-01-13 02:52:51
4. thnks for the loop

By: Benavidez,Jam at 2010-02-02 01:57:48
5. very nicely explained,
thank you

By: Amin at 2010-04-14 09:40:30
6. Si AIZA DIN< DI MARUNONG MAGTURO

By: Agnes at 2010-06-25 22:34:29
7. well done!!nice work

By: Dxy at 2010-07-26 00:46:55
8. good job.. i understand it clearly..
its indeed a big help..

By: xmplexd at 2010-08-04 02:12:30
9. this site is excellent & too easy to understand.

By: Gaurav Kushwaha at 2010-08-16 06:30:45

Your name (required):


Your email(required, will not be shown to the public):


Your sites URL (optional):


Your comments:


Enter Code:
The Captcha image

Latest Tutorials

[2010-04-15]File in C++ - Writing text to a file in C++
[2009-05-30]Function overloading in C++
[2009-05-30]Default arguments in C++
[2009-05-30]Call by reference in C++ Functions
[2007-09-17]Operator Precedence in C++
[2007-09-17]How to handle Exceptions in C++
[2007-09-17]atoi(), itoa() in C++
[2007-09-17]qsort() sample program in C++
[2007-09-17]ctime() sample program in C++
[2007-09-17]strcat() and strncat() sample program in C++
[2007-09-17]strcpy() and strncpy() sample program in C++
[2007-09-17]strlen() sample program in C++
[2007-09-17]Using #define, The Preprocessor and the Compiler in C++
[2007-09-17]assert() example program in C++
[2007-09-17]assert() Versus Exceptions in C++

More Latest News

Most Viewed Articles (in last 30 days)
Using cout in C++
Using switch Statements in C++
C++ Recursion function explained using Fibonacci series
Difference between Procedural, Structured, and Object-Oriented Programming
The if Statement in C++
assert() example program in C++
Public versus Private members in C++
Using command-line arguments in C++
atoi(), itoa() in C++
Constructors and Destructors in C++
Nested Loops in C++
ctime() sample program in C++
Function overloading in C++
while (1) Loops in C++
do...while Loops in C++
Most Emailed Articles (in last 30 days)
Difference between Procedural, Structured, and Object-Oriented Programming
C++ Recursion function explained using Fibonacci series
Using cout in C++
strcpy() and strncpy() sample program in C++
Using switch Statements in C++
ctime() sample program in C++
atoi(), itoa() in C++
qsort() sample program in C++
strcat() and strncat() sample program in C++
Getting Started with C++
A Brief History of C++
assert() example program in C++
Public versus Private members in C++
How to handle Exceptions in C++
The if Statement in C++