An alternating odd/even number triangle grows one number per row. Odd rows print odds starting at 1; even rows print evens starting at 2 — each step advances with k += 2.
Remember
Rule: for i from 1 to rows
k = 1 if i odd, else k = 2
print i numbers: k, then k += 2
1
2 4
1 3 5
2 4 6 8
1 3 5 7 9 ← rows = 5
Follows the left-shifted odd triangle in Program 17; next is the fill-with-5 triangle in Program 19.
Approach
How to Solve It
Outer loop grows width i. Set start k from i % 2, then print i values with k += 2 after each print.
Method
Idea
Best for
Parity + k += 2
Odd row → k = 1; even row → k = 2; then step by 2
Learning, interviews, exams
Ternary start
k = (i % 2 == 0) ? 2 : 1;
Same logic in one line
Pseudocode
Pseudocode
for i from 1 to rows:
if i is even:
k = 2
else:
k = 1
for j from 1 to i:
print k and a space
k += 2
print newline
Cheat sheet
Goal
Pattern
Grow each row
for (i = 1; i <= rows; i++)
Pick start
k = (i % 2 == 0) ? 2 : 1;
Print sequence
cout << k << " "; k += 2;
End of row
cout << "\n";
Flip parity
k = (i % 2 == 0) ? 1 : 2;
Printing Numbers vs Starting a New Line
API
Effect
Use for
cout << k << " "
Stays on the same line
Each number on the row
cout << "\n"
Ends the current line
After the inner loop finishes
Print numbers without a newline, then end the row once.
Try it
Live Preview
Change the row count and the alternating odd/even 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
1
2 4
1 3 5
2 4 6 8
1 3 5 7 9
Trace
Worked Walkthrough — rows = 5
Trace how parity sets the start and k += 2 keeps each row odd-only or even-only.
i
Start k
Sequence
Prints
1
1
1
1
2
2
2, 4
2 4
3
1
1, 3, 5
1 3 5
4
2
2, 4, 6, 8
2 4 6 8
5
1
1, 3, 5, 7, 9
1 3 5 7 9
Total numbers = n(n+1)/2 → O(n²). Reset k at the start of every row.
Code
C++ Programs
Three complete programs: fixed rows = 5, cin input, and a compact rows = 3 demo. Use View Output to reveal sample results.
Example 1 — Fixed rows = 5
Hard-coded height — set k from parity, then print i values with k += 2.
C++
#include <iostream>
using namespace std;
int main()
{
int rows = 5;
int i, j, k;
for (i = 1; i <= rows; i++)
{
if (i % 2 == 0)
k = 2;
else
k = 1;
for (j = 1; j <= i; j++)
{
cout << k << " ";
k += 2;
}
cout << "\n";
}
return 0;
}
Output
1
2 4
1 3 5
2 4 6 8
1 3 5 7 9
How It Works
1. Outer grows the row.i is both the row index and how many numbers to print.
2. Parity sets the start. Odd i → k = 1; even i → k = 2.
3. Step and newline. Print k, then k += 2; call cout << "\n" after the inner loop.
Example 2 — User Input Rows
Read rows with cin, validate, then use a ternary for the start value.
C++
#include <iostream>
using namespace std;
int main()
{
int rows;
int i, j, k;
cout << "Enter the number of rows: ";
if (!(cin >> rows) || rows <= 0)
{
cout << "Please enter a positive integer.\n";
return 1;
}
for (i = 1; i <= rows; i++)
{
k = (i % 2 == 0) ? 2 : 1;
for (j = 1; j <= i; j++)
{
cout << k << " ";
k += 2;
}
cout << "\n";
}
return 0;
}
Output (when user enters 4)
Enter the number of rows: 4
1
2 4
1 3 5
2 4 6 8
How It Works
1. Prompt and validate. Reject failed reads and non-positive values before printing.
2. Same core. Ternary start + k += 2 matches Example 1 — only rows comes from the user.
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 odd vs even starts.
C++
#include <iostream>
using namespace std;
int main()
{
int rows = 3;
int i, j, k;
for (i = 1; i <= rows; i++)
{
k = (i % 2 == 0) ? 2 : 1;
for (j = 1; j <= i; j++)
{
cout << k << " ";
k += 2;
}
cout << "\n";
}
return 0;
}
Output
1
2 4
1 3 5
How It Works
1. Three rows.i = 1 → 1; i = 2 → 2 4; i = 3 → 1 3 5.
2. Trace on paper. If you use k++ instead of k += 2, odds and evens mix on the same row.
3. Scale up next. Once the small demo is clear, use Examples 1–2 for five rows or user input.
Edge Cases & Pitfalls
Check these before calling the solution done.
k++
Mixed parity on a row
Using k++ instead of k += 2 mixes odd and even numbers. Keep the step of 2.
carry k
Forgot to reset k
Set k fresh from i % 2 at the start of every outer iteration — do not carry it from the previous row.
\n inside
Broken rows
If cout << "\n" sits inside the inner loop, each number lands on its own line. Call it only after the row finishes.
rows = 1
Single number
Output is just 1 — a good sanity check for input validation.
no space
Digits glued together
Use cout << k << " " so multi-digit values stay readable as the rows grow.
cin
Check the stream
Validate cin >> rows before looping — a failed read leaves rows 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)
Total numbers printed = 1 + 2 + … + n = n(n+1)/2 → O(n²) time. Only a few loop variables are needed.
Remember
Key Takeaways
Parity picks start: odd row → k = 1; even row → k = 2.
Step by 2:k += 2 keeps each row odd-only or even-only.
Break the row:cout << k << " " in the inner loop; cout << "\n" after it.
Complexity:O(n²) time from n(n+1)/2 numbers; O(1) extra space.
One line: for each row i, set k from parity, print i values stepping by 2, then newline.
Frequently Asked Questions
An alternating odd/even triangle: for rows=5 you get 1 / 2 4 / 1 3 5 / 2 4 6 8 / 1 3 5 7 9 — odd rows print odds, even rows print evens.
We check i % 2. If i is odd, set k = 1; if i is even, set k = 2.
Row 2 is even, so k starts at 2. The inner loop prints k then adds 2 twice: 2, then 4.
After printing k, update k += 2 so the sequence stays odd or even while increasing.
Yes. Swap the assignment so even rows start at 1 and odd rows start at 2.
cout << k << " " stays on the same line with a space. cout << "\n" ends the current line. Numbers use cout; the row break uses cout << "\n" after the inner loop.
After prompting, use if (!(cin >> rows) || rows <= 0) to reject bad input before printing.
O(n²) for n rows because total numbers printed are 1+2+…+n = n(n+1)/2.
🤔
Did you know?
Row parity picks the start value: odd rows begin at 1, even rows at 2. Then k += 2 keeps each row odd-only or even-only — still O(n²) total prints for n rows.