An inverted forward repeating alphabet triangle shrinks in width each row while the letter advances: row 1 is all As, row 2 all Bs, and so on.
Remember
Rule: width i from rows down to 1;
print ch exactly i times, then ch++
AAAAA
BBBB
CCC
DD
E ← 5 rows (start ch = 'A')
Same inverted widths as Program 11, but letters count up with ch++ instead of down. Print ch in the inner loop, then ch++ after each row so every line stays uniform.
Approach
How to Solve It
Two ways to emit the same shape — start with nested loops + ch++, then optionally polish with string(n, ch).
Method
Idea
Best for
Nested loops + ch++
Outer = shrinking width; print ch, then increment
Learning, interviews, exams
string(repeat, ch)
One call builds a full repeated-letter row
Short demos once loops click
Pseudocode
Pseudocode
ch = 'A'
for i from rows down to 1:
for j from 1 to i:
print ch (no newline)
print newline
ch = ch + 1
if (!(cin >> rows) || rows < 1 || rows > 26) {
cout << "Enter a whole number from 1 to 26.\n";
return 1;
}
Example 3 — string(repeat, ch)
Build each repeated-letter row in one call — same shape without an explicit inner print loop.
C++
#include <iostream>
#include <string>
using namespace std;
int main() {
int rows = 5;
for (int row = 0; row < rows; row++) {
char ch = (char)('A' + row);
int repeat = rows - row;
cout << string(repeat, ch) << "\n";
}
return 0;
}
Output
AAAAA
BBBB
CCC
DD
E
How It Works
1. Map row to letter and width. Row 0 → A × 5; row 1 → B × 4; and so on.
2. Build the row.string(repeat, ch) creates a string of length repeat filled with ch.
3. Print once. One cout per row replaces the inner letter loop.
Learn the nested-loop version first (Examples 1–2); treat string(n, ch) as a polish shortcut afterward.
Edge Cases & Pitfalls
Check these before calling the solution done.
cout j
Stepping letters on a row
If you print j instead of ch, the row is no longer uniform. Always print ch.
ch++ inside
Letters change mid-row
Put ch++ after the inner loop and newline. Incrementing inside the letter loop steps characters across the row.
ch-- by mistake
Program 11 shape
Using ch-- from a top letter reprints Program 11. Keep ch = 'A' and ch++ for this forward pattern.
\n inside
Column of letters
If cout << "\n" is inside the inner loop, each letter lands on its own line. End the row only after all repeats.
rows = 1
Single A
Output is just A — a good sanity check.
cin fail
Check the stream
If cin fails, rows may be unset — always test if (!(cin >> rows)) and prefer 1–26.
Analysis
Time and Space Complexity
Program
Time
Extra space
Nested loops (Examples 1–2)
O(rows²)
O(1)
string(n, ch) (Example 3)
O(rows²)
O(row width) temporary per row
Total letters = n + (n - 1) + … + 1 = n(n + 1)/2 — still quadratic in n. Same totals as Program 11; only the letter direction differs.
Remember
Key Takeaways
Rule: shrink width i; print ch exactly i times; then ch++.
Twin of Program 11: same widths — letters advance A→E instead of counting down.
Break then step:cout << "\n" first, then ch++ for the next shorter row.
Complexity:O(n²) time; O(1) extra space for the loop form.
One line: start at 'A'; for each shrinking width, print ch that many times, then cout << "\n" and ch++.
Frequently Asked Questions
Program 11 prints EEEEE, DDDD, ... (letters step down with ch--). Program 12 prints AAAAA, BBBB, ... (letters step up with ch++) with the same inverted widths 5..1.
i starts at 5 so the first inner loop runs five times while ch is A. After the row, ch becomes B and i is 4, so the next line prints B four times.
So every column on a row shows the same letter. Incrementing inside the inner loop would step letters across the row.
j only controls how many times the loop runs. Printing ch keeps the entire row the same letter; printing j would step letters across the row.
cout << ch stays on the same line. cout << "\n" ends the current line. Letters use cout << ch; the row break uses cout << "\n" after the inner loop.
O(n²) where n is the number of rows. Total letter prints equal n+(n-1)+…+1 = n(n+1)/2.
Yes. cout << string(repeat, ch) << "\n" prints a full repeated-letter row in one call. Nested loops are better for learning; the string constructor is a handy shortcut later.
After cin >> rows, check failure: if (!(cin >> rows)) handle bad input. Keep ch = 'A' and loop i from rows down to 1 with ch++ after each row. Clamp to 26 for A–Z demos.
🤔
Did you know?
This is the forward-letter twin of Program 11: same inverted widths (5…1), but letters advance A→E with ch++ instead of stepping down. Print ch in the inner loop, then ch++ after each row so every line stays uniform.