Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรมพิมพ์รูปหลังคาบ้าน (Hut Pattern) ใน C++


ในบทช่วยสอนนี้ เราจะพูดถึงโปรแกรมพิมพ์รูปแบบหลังคาบ้าน (Hut Pattern)

เราจะได้รับความกว้างของหลังคาบ้านที่จะพิมพ์ (เช่น N) งานคือพิมพ์โครงสร้างหลังคาบ้านด้วยความกว้างที่กำหนด ใช้ดาว (*) และประตูภายในบ้านด้วยอักขระเส้น (|, _)

ตัวอย่างโค้ด

#include <iostream>
using namespace std;

// พิมพ์โครงสร้างหลังคาบ้านที่กำหนด
int print_hut(int n) {
    int i, j, t;

    if (n % 2 == 0) {
        n++;
    }

    for (i = 0; i <= n - n / 3; i++) {
        for (j = 0; j < n; j++) {
            t = 2 * n / 5;
            if (t % 2 != 0) {
                t--;
            }

            // คำนวณระยะห่างจากตัวอักษรแรก
            // และพิมพ์ขอบนอกของหลังคาบ้าน
            if (i == n / 5
                || i == n - n / 3
                || (j == n - 1 && i >= n / 5)
                || (j >= n / 5 && j < n - n / 5 && i == 0)
                || (j == 0 && i >= n / 5)
                || (j == t && i > n / 5)
                || (i <= n / 5 && (i + j == n / 5 || j - i == n / 5))
                || (j - i == n - n / 5)) {
                cout << "*";
            }
            // พิมพ์โครงสร้างประตู
            else if (i == n / 5 + n / 7 && (j >= n / 7 && j <= t - n / 7)) {
                cout << "_";
            }
            else if (i >= n / 5 + n / 7 && (j == n / 7 || j == t - n / 7)) {
                cout << "|";
            }
            else {
                cout << " ";
            }
        }
        cout << "\n";
    }
}

int main() {
    int n = 12;
    print_hut(n);
    return 0;
}

ผลลัพธ์

**********
*        *
*        *
*************
*___*
* | | *
* | | *
* | | *
* | | *
* | | *
* | | *
*************