EZ

EZNotes

🎯 Aim

Write a C/C++ program that displays an upside‑down right triangle of 'X' characters using nested while loops with decrement operators (--).

🛠️ What You Need

  • Any C/C++ compiler (VS Code, Dev‑C++, Code::Blocks, etc.)
  • Understanding of while loops, nested loops, and decrement (--)

📖 Introduction

In this practical, you will generate an inverted right‑triangle where the first row has 5 X's, the second has 4, and so on, until 1 X in the last row.

Target output (5 rows):

X X X X X X X X X X X X X X X

Key logic:

  • Outer while loop – controls rows, starting from 5 and decrementing to 1.
  • Inner while loop – prints X's, starting from the current row count and decrementing to 0.
  • Both loops use decrement operators (--) to reduce counters.
💡 Tip: Decrement operators (--) are perfect for counting downwards. The outer loop starts at 5 and goes down to 1; the inner loop prints as many X's as the current row number.

📝 Steps

Step 1: Write the Program

  1. Open your C compiler / VS Code.
  2. Create a new file named upside_down_x.c.
  3. Write the following code using while loops and decrement operators:
/* Practical 52: Upside down right triangle of X using nested while loops & decrement operators */ #include <stdio.h> int main() { int rows = 5; // number of rows int i = rows; // outer loop counter (starts at 5) printf("========== UPSIDE DOWN X TRIANGLE ==========\n"); /* outer while: runs while i > 0 */ while (i > 0) { int j = i; // inner loop counter = current row number /* inner while: prints X's while j > 0 */ while (j > 0) { printf("X "); j--; // decrement inner counter } printf("\n"); // new line after each row i--; // decrement outer counter } printf("=============================================\n"); return 0; }

Step 2: Code Explanation

  1. int rows = 5; – defines the number of rows (you can change it).
  2. int i = rows; – outer loop starts from 5.
  3. while (i > 0) – outer loop runs until i becomes 0.
  4. int j = i; – inner counter gets the current row value.
  5. while (j > 0) – inner loop prints X's until j reaches 0.
  6. j-- and i-- – decrement operators reduce the counters each iteration.

Step 3: Save, Compile & Run

  1. Save the file (Ctrl+S).
  2. Compile using the terminal:
gcc upside_down_x.c -o upside_down_x

Run the program:

./upside_down_x

Expected Output:

========== UPSIDE DOWN X TRIANGLE ========== X X X X X X X X X X X X X X X =============================================

Step 4: Variations & Enhancements

  1. Change number of rows: set rows = 7 to print 7 rows.
  2. Different character: replace 'X' with '*' or any symbol.
  3. Without spaces: change "X " to "X".
  4. User input: ask the user for the number of rows.
/* Variation: user input for rows */ int rows; printf("Enter number of rows: "); scanf("%d", &rows); int i = rows; while (i > 0) { int j = i; while (j > 0) { printf("X "); j--; } printf("\n"); i--; }

📊 Execution Trace (Step‑by‑Step)

Row (i) Inner loop (j) Condition j > 0 X's printed Row output
5j = 5,4,3,2,1all true (until 0)5 X'sX X X X X
4j = 4,3,2,1all true4 X'sX X X X
3j = 3,2,1all true3 X'sX X X
2j = 2,1all true2 X'sX X
1j = 11 > 0 ✅1 XX

📊 Alternative Methods

/* Using for loops (equivalent) */ for (int i = rows; i > 0; i--) { for (int j = i; j > 0; j--) printf("X "); printf("\n"); }
/* Using do-while loops */ int i = rows; do { int j = i; do { printf("X "); j--; } while (j > 0); printf("\n"); i--; } while (i > 0);
/* Without space between X's */ while (i > 0) { int j = i; while (j > 0) { printf("X"); // no space j--; } printf("\n"); i--; }

📊 Observations

  • Nested while loops with decrement operators naturally create a descending pattern.
  • Outer loop goes from rows down to 1; inner loop prints exactly i X's.
  • Decrement operators (--) make the code concise and clear.
  • This pattern is the mirror image of the ascending right triangle.

✅ Result

You have successfully created a C program that prints an upside‑down right triangle of 'X' using nested while loops and decrement operators. You also explored variations with user input, different characters, and alternative loop structures.

📌 Important: The inner loop's condition j > 0 ensures that when j becomes 0, the loop stops. Each row has exactly i X's because j starts at i and decrements to 0.
💡 Tip: Try changing the decrement operator to j = j - 1 (explicit decrement) to see the same result. You can also use while (j >= 1) as an alternative condition.

🎯 مقصد

ایک C/C++ پروگرام لکھیں جو 'X' حروف کا الٹا دائیں‑زاویہ مثلث nested while loops اور decrement operators (--) کے استعمال سے ظاہر کرے۔

🛠️ آپ کو کیا چاہیے

  • کوئی بھی C/C++ کمپائلر (VS Code، Dev‑C++، Code::Blocks وغیرہ)
  • while loops، nested loops اور decrement (--) کی سمجھ

📖 تعارف

اس عملی میں آپ ایک الٹی مثلث بنائیں گے جس کی پہلی قطار میں 5 X ہوں گے، دوسری میں 4، اور آخر میں 1 X ہوگا۔

مطلوبہ آؤٹ پٹ (5 قطاریں):

X X X X X X X X X X X X X X X

بنیادی منطق:

  • بیرونی while لوپ – قطاروں کو کنٹرول کرتا ہے، 5 سے شروع ہو کر 1 تک گھٹتا ہے۔
  • اندرونی while لوپ – X پرنٹ کرتا ہے، موجودہ قطار کی تعداد سے شروع ہو کر 0 تک گھٹتا ہے۔
  • دونوں لوپ decrement operators (--) استعمال کرتے ہیں۔
💡 مشورہ: Decrement operators (--) نیچے کی طرف گنتی کے لیے بہترین ہیں۔ بیرونی لوپ 5 سے 1 تک جاتا ہے؛ اندرونی لوپ اتنی ہی X پرنٹ کرتا ہے جتنی موجودہ قطار کا نمبر ہے۔

📝 اقدامات

پہلا قدم: پروگرام لکھیں

  1. اپنا C کمپائلر / VS Code کھولیں۔
  2. upside_down_x.c نام کی نئی فائل بنائیں۔
  3. نیچے دیا گیا کوڈ while loops اور decrement operators کے ساتھ لکھیں:
/* Practical 52: Upside down right triangle of X using nested while loops & decrement operators */ #include <stdio.h> int main() { int rows = 5; // number of rows int i = rows; // outer loop counter (starts at 5) printf("========== UPSIDE DOWN X TRIANGLE ==========\n"); /* outer while: runs while i > 0 */ while (i > 0) { int j = i; // inner loop counter = current row number /* inner while: prints X's while j > 0 */ while (j > 0) { printf("X "); j--; // decrement inner counter } printf("\n"); // new line after each row i--; // decrement outer counter } printf("=============================================\n"); return 0; }

دوسرا قدم: کوڈ کی وضاحت

  1. int rows = 5; – قطاروں کی تعداد (آپ تبدیل کر سکتے ہیں)۔
  2. int i = rows; – بیرونی لوپ 5 سے شروع ہوتا ہے۔
  3. while (i > 0) – بیرونی لوپ اس وقت تک چلتا ہے جب تک i 0 نہ ہو جائے۔
  4. int j = i; – اندرونی کاؤنٹر کو موجودہ قطار کی قدر ملتی ہے۔
  5. while (j > 0) – اندرونی لوپ X پرنٹ کرتا ہے جب تک j 0 تک نہ پہنچ جائے۔
  6. j-- اور i-- – decrement operators ہر بار کاؤنٹرز کو گھٹاتے ہیں۔

تیسرا قدم: محفوظ کریں، کمپائل کریں اور چلائیں

  1. فائل محفوظ کریں (Ctrl+S
  2. ٹرمینل میں کمپائل کریں:
gcc upside_down_x.c -o upside_down_x

پروگرام چلائیں:

./upside_down_x

متوقع آؤٹ پٹ:

========== UPSIDE DOWN X TRIANGLE ========== X X X X X X X X X X X X X X X =============================================

چوتھا قدم: تغیرات اور اضافہ

  1. قطاروں کی تعداد تبدیل کریں: rows = 7 سیٹ کریں تو 7 قطاریں پرنٹ ہوں گی۔
  2. مختلف کردار: 'X' کو '*' یا کسی اور علامت سے بدلیں۔
  3. بغیر اسپیس: "X " کو "X" میں تبدیل کریں۔
  4. یوزر ان پٹ: صارف سے قطاروں کی تعداد پوچھیں۔
/* تغیر: صارف سے قطاروں کی تعداد */ int rows; printf("Enter number of rows: "); scanf("%d", &rows); int i = rows; while (i > 0) { int j = i; while (j > 0) { printf("X "); j--; } printf("\n"); i--; }

📊 مرحلہ وار عمل (Execution Trace)

قطار (i) اندرونی لوپ (j) شرط j > 0 پرنٹ شدہ X قطار کا آؤٹ پٹ
5j = 5,4,3,2,1سب درست (0 تک)5 XX X X X X
4j = 4,3,2,1سب درست4 XX X X X
3j = 3,2,1سب درست3 XX X X
2j = 2,1سب درست2 XX X
1j = 11 > 0 ✅1 XX

📊 متبادل طریقے

/* for loops کا استعمال (مساوی) */ for (int i = rows; i > 0; i--) { for (int j = i; j > 0; j--) printf("X "); printf("\n"); }
/* do-while loops کا استعمال */ int i = rows; do { int j = i; do { printf("X "); j--; } while (j > 0); printf("\n"); i--; } while (i > 0);
/* بغیر اسپیس کے X */ while (i > 0) { int j = i; while (j > 0) { printf("X"); // no space j--; } printf("\n"); i--; }

📊 مشاہدات

  • nested while loops اور decrement operators قدرتی طور پر نیچے کی طرف گھٹتے ہوئے نمونے بناتے ہیں۔
  • بیرونی لوپ rows سے 1 تک جاتا ہے؛ اندرونی لوپ بالکل i X پرنٹ کرتا ہے۔
  • Decrement operators (--) کوڈ کو مختصر اور واضح بناتے ہیں۔
  • یہ نمونہ صعودی دائیں‑زاویہ مثلث کا آئینہ ہے۔

✅ نتیجہ

آپ نے کامیابی سے ایک C پروگرام بنایا جو 'X' کا الٹا دائیں‑زاویہ مثلث nested while loops اور decrement operators کے ذریعے پرنٹ کرتا ہے۔ آپ نے یوزر ان پٹ، مختلف کرداروں اور متبادل لوپ ڈھانچوں کے ساتھ تغیرات بھی دیکھے۔

📌 اہم: اندرونی لوپ کی شرط j > 0 اس بات کو یقینی بناتی ہے کہ جب j 0 ہو جائے تو لوپ رک جائے۔ ہر قطار میں بالکل i X ہوتے ہیں کیونکہ j i سے شروع ہو کر 0 تک گھٹتا ہے۔
💡 مشورہ: decrement operator کو j = j - 1 (واضح decrement) سے تبدیل کریں اور وہی نتیجہ دیکھیں۔ آپ while (j >= 1) بھی استعمال کر سکتے ہیں۔
⬅ Back to Practical Notebooks