Shape Rule
Wide first, letters forward
Row 1 prints AAAAA, then BBBB, down to a single E.

Row width shrinks from five to one, but the letter moves forward each row: AAAAA, BBBB, CCC, DD, E. Compare with Program 11 (same shape, letters step down) and worked C# examples, live preview, edge cases, and complexity.
Wide first, letters forward
Row 1 prints AAAAA, then BBBB, down to a single E.
Letter advance
for (char i = 'A'; i <= 'E'; i++) picks the letter for each row.
Width 5…1
for (char j = 'E'; j >= i; j--) shrinks as i rises — print i, not j.
Same line / next line
Letters use Write; end each row with WriteLine().
1–26 rows
Pick a row count and draw the inverted forward triangle in the browser.
Complexity
Total letters = n(n+1)/2; extra memory stays O(1).
An inverted forward repeating alphabet triangle starts wide and shrinks by one repeated letter on each new line, while letters advance from A toward the top of the range. With the right angle on the left, the console shows an upside-down staircase of identical letters per row.
In C# you usually solve it with two nested for loops: the outer loop picks the row letter (counting up), the inner loop prints that same letter fewer times each row, then Console.WriteLine() moves to the next line.
It shows that letter direction and width direction are independent knobs. Flip only the outer loop (A→E vs E→A) and you move between Program 12 and Program 11 without rewriting the shape idea.
Top row repeats A exactly n times.
Rows go A, B, C, … while widths go n…1.
Write(i) in the inner loop; WriteLine() after.
Same widths — opposite letter direction.
In short: for each letter i from A up to top, print i repeatedly (top - i + 1) times, then call Console.WriteLine().
Given a positive integer rows (or a fixed top letter like 'E'), print a left-aligned inverted triangle where letters advance from A and widths shrink from rows down to 1.
// First 5 rows (conceptual shape)
// AAAAA
// BBBB
// CCC
// DD
// E | Item | Type | Description |
|---|---|---|
rows | int | Number of triangle lines (typically 1–26). Top letter = 'A' + rows - 1. |
| Printed output | text | Left-aligned rows; row r (0-based) prints letter 'A' + r exactly rows - r times. |
top = 'A' + rows - 1
for row from 0 to rows - 1:
ch = 'A' + row
repeat = rows - row
for k from 1 to repeat:
print ch (no newline)
print newline | Approach | Idea | Best for |
|---|---|---|
| Nested char loops | Outer A…top + inner top…i width | Learning and interviews |
new string(ch, repeat) | Build a whole row in one call | Shorter production-style demos |
| Goal | Pattern |
|---|---|
| Walk letters forward | for (char i = 'A'; i <= 'E'; i++) |
| Shrink repeat count | for (char j = 'E'; j >= i; j--) |
| Print row letter | Console.Write(i); — not j |
| End the row | Console.WriteLine(); |
| One-line row shortcut | Console.WriteLine(new string(ch, repeat)); |
| Letters step down | See Program 11 (EEEEE, DDDD, …) |
Same triangle — different ways to emit characters.
same linePrints a letter without moving to the next line
new lineEnds the current row after all repeats are printed
whole rowBuilds n copies of ch at once — skip the inner loop
print iMaster printing the outer letter before the string shortcut
Reach for this triangle when practicing inverted widths with forward letters.
Keep shrinking widths; flip only the letter direction to A→E.
Letter direction and width direction can flip separately.
Practice ch = 'A' + row and repeat = rows - row.
Next: sequential letters that keep advancing across rows.
This is a console teaching pattern — not how you build modern app screens.
Key benefit: one small program that proves letter direction is independent of inverted width — a core alphabet-pattern skill.
Choose a row count between 1 and 26 and draw the inverted forward repeating alphabet triangle in the browser.
Three complete C# programs — fixed top letter, console input, and a new string shortcut. Click View Output to reveal sample console results.
Print five inverted forward rows with classic nested char loops.
'A' up to 'E'Hard-coded range — ideal for first demos and screenshots.
using System;
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
for (char i = 'A'; i <= 'E'; i++)
{
for (char j = 'E'; j >= i; j--)
{
Console.Write(i);
}
Console.WriteLine();
}
}
}
} When i = 'A', the inner loop runs from E down to A (5 times) and prints A. When i = 'B', it prints BBBB, and so on until a single E. Printing i (not j) keeps each row uniform.
Let the user choose the height at runtime.
Use row index: ch = 'A' + row and repeat = rows - row. Prefer int.TryParse in real apps.
using System;
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter the number of rows: ");
int rows = Convert.ToInt32(Console.ReadLine());
char top = (char)('A' + rows - 1);
for (int row = 0; row < rows; row++)
{
char ch = (char)('A' + row);
int repeat = rows - row;
for (int k = 1; k <= repeat; k++)
{
Console.Write(ch);
}
Console.WriteLine();
}
}
}
} For rows = 4, row 0 prints A four times, row 1 prints B three times, and so on. Clamp rows to 1–26 so letters stay within A–Z. (top is shown for clarity; the index formula does the real work.)
Same shape without an explicit inner print loop.
new string(ch, repeat)Build each repeated-letter row in one call, then print it.
using System;
namespace MyApp
{
class Program
{
static void Main(string[] args)
{
int rows = 5;
for (int row = 0; row < rows; row++)
{
char ch = (char)('A' + row);
int repeat = rows - row;
Console.WriteLine(new string(ch, repeat));
}
}
}
} new string(ch, repeat) creates a string of length repeat filled with ch. Great once you understand the nested-loop idea; keep the two-loop version for exams that ask you to show both bounds.
using System; brings in Console. Fix the top letter or compute it from rows.
for (char i = 'A'; i <= 'E'; i++) selects the character printed on the row.
for (char j = 'E'; j >= i; j--) runs 5, 4, 3… times; print i with Console.Write(i).
Console.WriteLine() ends the row so the next outer iteration starts fresh.
Total letters: n+(n-1)+…+1 = n(n+1)/2 — O(n²) time, O(1) extra memory.
'A' up to 'E'Trace each outer-loop value of i and count how many times the inner loop runs.
i | Inner j range | Printed row | Repeats |
|---|---|---|---|
'A' | 'E'..'A' | AAAAA | 5 |
'B' | 'E'..'B' | BBBB | 4 |
'C' | 'E'..'C' | CCC | 3 |
'D' | 'E'..'D' | DD | 2 |
'E' | 'E'..'E' | E | 1 |
Total letter prints: 5 + 4 + 3 + 2 + 1 = 15 = 5×6/2.
Where this tiny pattern (and its loop structure) shows up beyond the homework prompt.
Clearest demo that forward letters can pair with shrinking widths.
Example: swap only the outer loop direction to get Program 11.
Teach letter direction as a one-line change.
Example: side-by-side EEEEE/DDDD vs AAAAA/BBBB.
Practice 'A' + row and rows - row without char countdown tricks.
Example: row 2 → letter C, repeat = n-2.
Swap to lowercase or mix digits once the loops work.
Example: start from 'a' + row.
Descending triangular totals still make O(n²) concrete.
Example: 5+4+…+1 = 15 for n = 5.
Pair the pattern with TryParse and 1–26 clamps.
Example: reject rows <= 0 or rows > 26.
Pro Tip: say “letters go up, width goes down” before coding — that story prevents mixing Program 11’s countdown letter with this page.
Why this pattern earns a spot right after the inverted countdown triangle.
Wrong letter direction shows up immediately as EEEEE instead of AAAAA.
Only loops, chars, and console output — no arrays required.
Flip to Program 11 by counting letters downward instead.
Streaming output needs no storage beyond loop counters.
Pro Tip: learn the nested-loop version first; treat new string(ch, repeat) as a polish shortcut afterward.
Small habits that keep alphabet-pattern code clean.
Use ch = 'A' + row and repeat = rows - row — clearer than overloaded char bounds alone.
TryParseAvoid crashes when the user types letters instead of a number.
Only call WriteLine() after the inner loop finishes the row.
For A–Z demos, reject or clamp rows > 26.
Trace rows = 3 (AAA, BB, C) on paper before coding larger demos.
Pro Tip: if you get EEEEE, DDDD, CCC instead of AAAAA, BBBB, CCC, you reused Program 11’s countdown outer loop.
Mistakes that commonly break inverted forward repeating alphabet patterns.
j Instead of iRows become countdown sequences instead of repeated letters.
→ Always Console.Write(i) (or ch) for this shape.
Counting i from top down to A prints EEEEE first instead of AAAAA.
→ Keep i (or row) advancing from A upward.
Each letter lands on its own line — you get a column, not a triangle.
→ Use Write for letters; WriteLine only after the inner loop.
Letters or empty input throw FormatException.
→ Prefer int.TryParse and re-prompt on failure.
'A' + rows - 1 can leave the A–Z range.
→ Clamp to 26 or define wrap/error behavior explicitly.
Check these inputs before calling the solution done.
Output is just A on one line.
Treat as invalid; re-prompt instead of silent empty output.
rows < 0Invalid height — validate before looping.
Clamp or error — char math leaves A–Z.
Convert.ToInt32 throws — use TryParse.
Same loops work with 'a' + row.
Try these variations to lock in the pattern.
TryParse until 1 <= rows <= 26'a' + row as the row lettern(n+1)/2 — hence O(n²) time.1 <= rows <= 26 for interactive A–Z programs.Quick Takeaway: outer loop advances the letter (A→top), inner loop shrinks the width, then break the line — that is the whole pattern.
| Program | Time | Extra space |
|---|---|---|
| Nested loops (Examples 1–2) | O(rows²) | O(1) |
new string(ch, repeat) (Example 3) | O(rows²) | O(rows) per row string (temporary) |
The inverted forward repeating alphabet triangle is a small nested-loop exercise with lasting payoff: forward letters vs shrinking width, and O(n²) intuition. Master the classic two-loop version, then optionally shorten rows with new string(ch, repeat).
Practice the three examples above, then compare with Program 11 or continue to Program 13’s sequential letters.
Print the outer letter with Write, end rows with WriteLine, and use repeat = rows - row (not Program 11’s countdown letter) for this shape.
Console.Write for letters and WriteLine after each row1 <= rows <= 26 for interactive programsint.TryParse over bare Convert.ToInt32WriteLine inside the inner letter looprows > 26 without a clear policyPrint the inverted forward repeating triangle the beginner-friendly way.
Letters up, width down
DefinitionAdvances A→top
CodeShrinks with Write(i)
CodeEnds each row
I/OO(n²) time
AnalysisThis is the forward-letter twin of Program 11: same inverted widths (5…1), but letters advance A→E instead of stepping down. Print the outer loop letter inside the inner loop so each row stays uniform.
Next up: sequential letters that keep advancing across the whole triangle.
12 people found this page helpful