วันพุธ, 16 เมษายน 2568

คำสั่งและเทคนิคในการวาดรูปแบบ (Pattern) ใน C++

1. รูปสี่เหลี่ยมเต็ม

void drawSquare(int size) {
    for (int i = 0; i < size; i++) {
        for (int j = 0; j < size; j++) {
            cout << "* ";
        }
        cout << endl;
    }
}

// ตัวอย่างผลลัพธ์ (size = 4):
// * * * *
// * * * *
// * * * *
// * * * *

2. รูปสามเหลี่ยม

void drawTriangle(int height) {
    for (int i = 1; i <= height; i++) {
        for (int j = 1; j <= i; j++) {
            cout << "* ";
        }
        cout << endl;
    }
}

// ตัวอย่างผลลัพธ์ (height = 4):
// *
// * *
// * * *
// * * * *

3. รูปสี่เหลี่ยมกลวง

void drawHollowSquare(int size) {
    for (int i = 1; i <= size; i++) {
        for (int j = 1; j <= size; j++) {
            if (i == 1 || i == size || j == 1 || j == size) {
                cout << "* ";
            } else {
                cout << "  ";
            }
        }
        cout << endl;
    }
}

// ตัวอย่างผลลัพธ์ (size = 4):
// * * * *
// *     *
// *     *
// * * * *

4. รูปสามเหลี่ยมกลับหัว

void drawInvertedTriangle(int height) {
    for (int i = height; i >= 1; i--) {
        for (int j = 1; j <= i; j++) {
            cout << "* ";
        }
        cout << endl;
    }
}

// ตัวอย่างผลลัพธ์ (height = 4):
// * * * *
// * * *
// * *
// *

5. รูปสามเหลี่ยมตัวเลข

void drawNumberPattern(int rows) {
    for (int i = 1; i <= rows; i++) {
        for (int j = 1; j <= i; j++) {
            cout << j << " ";
        }
        cout << endl;
    }
}

// ตัวอย่างผลลัพธ์ (rows = 4):
// 1
// 1 2
// 1 2 3
// 1 2 3 4

6. รูปสามเหลี่ยมปิรามิด

void drawPyramid(int height) {
    for (int i = 1; i <= height; i++) {
        // พิมพ์ช่องว่าง
        for (int j = 1; j <= height - i; j++) {
            cout << " ";
        }
        // พิมพ์ดาว
        for (int k = 1; k <= 2 * i - 1; k++) {
            cout << "*";
        }
        cout << std::endl;
    }
}

// ตัวอย่างผลลัพธ์ (height = 4):
//    *
//   ***
//  *****
// *******


เทคนิคเพิ่มเติม:

  1. ใช้ตัวแปร char เพื่อเปลี่ยนสัญลักษณ์ที่ใช้วาด
  2. ใช้ nested loop เพื่อควบคุมแถวและคอลัมน์
  3. ใช้เงื่อนไข if-else เพื่อกำหนดว่าจะพิมพ์อะไรในแต่ละตำแหน่ง
  4. ใช้ arithmetic progression เพื่อคำนวณจำนวนสัญลักษณ์ในแต่ละแถว
  5. ใช้ modulo operator (%) เพื่อสร้างรูปแบบที่ซับซ้อนขึ้น

หมายเหตุ:

  • ปรับขนาดของรูปแบบโดยเปลี่ยนค่า parameter ที่ส่ง