An increasing number triangle from 11 prints i values on row i, each computed as 9 + i + j — so the first cell is always 11.
Remember
Rule: for i from 1 to rows
for j from 1 to i
print (9 + i + j) and a space
11
12 13
13 14 15
14 15 16 17
15 16 17 18 19 ← rows = 5
Follows the number-star diamond in Program 31; next is the same shape starting from 1 in Program 33.
Approach
How to Solve It
Outer loop grows i. Inner loop prints i values with the formula 9 + i + j, separated by spaces.
Method
Idea
Best for
Formula 9 + i + j
Base offset 9 shifts the triangle to start at 11
Learning, interviews, exams
Custom base
baseVal + i + j with cin
Flexible starting number
Pseudocode
Pseudocode
for i from 1 to rows:
for j from 1 to i:
print (9 + i + j) and a space
print newline
Cheat sheet
Goal
Pattern
Grow each row
for (i = 1; i <= rows; i++)
Print i values
for (j = 1; j <= i; j++)
Start at 11
cout << 9 + i + j << " ";
Custom base
cout << baseVal + i + j << " ";
End of row
cout << "\n";
Printing Numbers vs Starting a New Line
API
Effect
Use for
cout << value << " "
Stays on the same line
Each number on the row
cout << "\n"
Ends the current line
After the inner loop finishes
Print values without a newline, then end the row once.
Try it
Live Preview
Change the row count and the increasing triangle updates instantly — capped at 9 for readable demos.
Whole numbers from 1 to 9. Tap a chip or type a value — the preview redraws as you go.
Live resultrows = 5 · 15 numbers
11
12 13
13 14 15
14 15 16 17
15 16 17 18 19
Trace
Worked Walkthrough — rows = 5
Trace how each (i, j) pair maps to 9 + i + j.
i
Values
Count
Prints
1
11
1
11
2
12, 13
2
12 13
3
13, 14, 15
3
13 14 15
4
14..17
4
14 15 16 17
5
15..19
5
15 16 17 18 19
Total numbers = 1 + 2 + … + n = n(n+1)/2 → O(n²).
Code
C++ Programs
Three complete programs: fixed rows = 5, custom base with cin, and a compact rows = 3 demo. Use View Output to reveal sample results.
Example 1 — Fixed rows = 5
Hard-coded height — print 9 + i + j with a trailing space on each cell.
C++
#include <iostream>
using namespace std;
int main()
{
int i, j;
for (i = 1; i <= 5; i++)
{
for (j = 1; j <= i; j++)
cout << 9 + i + j << " ";
cout << "\n";
}
return 0;
}
Output
11
12 13
13 14 15
14 15 16 17
15 16 17 18 19
How It Works
1. Outer grows the width. Row i prints exactly i numbers.
2. Formula fills the cells.9 + i + j makes the first cell 11 and each row start one higher.
3. Newline once. Call cout << "\n" only after the inner loop finishes.
Example 2 — Custom Base and Rows
Read rows and baseVal with cin, validate, then use baseVal + i + j.
C++
#include <iostream>
using namespace std;
int main()
{
int rows, baseVal;
int i, j;
cout << "Enter rows: ";
if (!(cin >> rows) || rows <= 0)
{
cout << "Please enter a positive integer.\n";
return 1;
}
cout << "Enter base: ";
if (!(cin >> baseVal))
{
cout << "Please enter a whole number.\n";
return 1;
}
for (i = 1; i <= rows; i++)
{
for (j = 1; j <= i; j++)
cout << baseVal + i + j << " ";
cout << "\n";
}
return 0;
}
Output (when user enters 3 and 9)
Enter rows: 3
Enter base: 9
11
12 13
13 14 15
How It Works
1. Prompt and validate. Reject failed reads and non-positive rows before printing.
2. Same core.baseVal replaces hard-coded 9 — use 9 to start at 11.
3. Safer input tip. Cap demos for readable output:
Safer input
if (!(cin >> rows) || rows < 1 || rows > 9)
{
cout << "Enter a whole number from 1 to 9.\n";
return 1;
}
Example 3 — Compact rows = 3
Same structure with only three rows — easy to confirm the formula on paper.
C++
#include <iostream>
using namespace std;
int main()
{
int rows = 3;
int i, j;
for (i = 1; i <= rows; i++)
{
for (j = 1; j <= i; j++)
cout << 9 + i + j << " ";
cout << "\n";
}
return 0;
}
Output
11
12 13
13 14 15
How It Works
1. Three rows.i = 1 → 11; i = 2 → 12 13; i = 3 → 13 14 15.
2. Trace on paper. If you forget the trailing space, numbers glue together (1213).
3. Scale up next. Once the small demo is clear, use Examples 1–2 for five rows or a custom base.
Edge Cases & Pitfalls
Check these before calling the solution done.
wrong base
Offset off by one
Using 10 + i + j or i + j shifts every value — the triangle no longer starts at 11. Keep 9 + i + j.
j <= rows
Rectangle instead of triangle
Inner bound j <= rows makes every row the same width. Use j <= i.
no space
Glued numbers
Without << " ", values run together (1213). Always print a trailing space.
\n inside
Broken rows
If cout << "\n" sits inside the inner loop, you get one number per line. Call it only after the loop.
rows = 1
Single value
Output is just 11. A good sanity check for input validation.
cin
Check the stream
Validate cin >> rows (and baseVal) before looping — a failed read leaves values unset or stale.
Analysis
Time and Space Complexity
Program
Time
Extra space
Fixed / input (Examples 1–2)
O(n²)
O(1)
Compact rows = 3 (Example 3)
O(n²)
O(1)
Row i prints i numbers. Total = 1 + 2 + … + n = n(n+1)/2 → O(n²) time. Only a few loop variables are needed.
Remember
Key Takeaways
Formula: each cell is 9 + i + j — first cell is always 11.
Growing width: inner loop runs j = 1..i so row i has i numbers.
Break the row: values with spaces in the inner loop; cout << "\n" after it finishes.
Complexity:O(n²) time from n(n+1)/2 prints; O(1) extra space.
One line: for each row i, print 9 + i + j for j = 1..i with spaces, then newline.
Frequently Asked Questions
An increasing triangle from 11: for rows=5 you get 11 / 12 13 / 13 14 15 / 14 15 16 17 / 15 16 17 18 19 — each value is 9 + i + j.
Because the printed value is 9 + i + j. On the first row i = 1 and j = 1, so 9 + 1 + 1 = 11.
It is a base offset. Change 9 to any base value to shift the entire triangle — see Example 2.
Program 32 uses 9 + i + j (starts at 11). Program 33 uses i + j - 1 (starts at 1).
cout << 9 + i + j << " " keeps values separated on the same row. cout << "\n" ends the row.
cout << value << " " stays on the same line. cout << "\n" ends the row after the inner loop finishes.
After prompting, use if (!(cin >> rows) || rows <= 0) to reject bad input before printing.
O(n²) for n rows because total prints are 1 + 2 + … + n = n(n+1)/2.
🤔
Did you know?
Each printed value is computed as 9 + i + j. Row i = 1 prints 11; row i = 2 prints 12 and 13 — a left-shifted increasing triangle.