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

โปรแกรม C สร้างรูปแบบหกเหลี่ยม (Hexagonal Pattern)

ได้รับจำนวนเต็ม n ภารกิจคือสร้างและแสดงรูปแบบหกเหลี่ยม

ตัวอย่าง

Input: n=5
Output: (รูปหกเหลี่ยมจากดอกจัน *)
Input: n = 4
Output: (รูปหกเหลี่ยมขนาดเล็กลง)

แนวทางการแก้ปัญหา

  • รับค่า n จากผู้ใช้
  • แบ่งรูปแบบออกเป็น 3 ส่วน: ส่วนบน, ส่วนกลาง, ส่วนล่าง
  • ใช้ลูป i สำหรับส่วนบน (จาก 0 ถึง n-1)
  • ใช้ลูป m สำหรับส่วนกลาง (จาก 0 ถึง n-3)
  • ใช้ลูป h สำหรับส่วนล่าง (จาก n-1 ลงมาถึง 0)
  • พิมพ์ดอกจัน (*) พร้อมช่องว่างตามตำแหน่งที่กำหนด

อัลกอริทึม

START
Step 1: ประกาศฟังก์ชัน pattern(int n)
    กำหนด len = 2 * n - 1
    ลูป i = 0 ถึง n-1 (ส่วนบน)
        temp = i + n
        ลูป k = 0 ถึง temp-1
            ถ้า (k == n+i-1) หรือ (k == n-i-1) พิมพ์ *
            ไม่เช่นนั้น พิมพ์ช่องว่าง
        พิมพ์ขึ้นบรรทัดใหม่
    ลูป m = 0 ถึง n-3 (ส่วนกลาง)
        ลูป j = 0 ถึง len-1
            ถ้า j == 0 หรือ j == len-1 พิมพ์ *
            ไม่เช่นนั้น พิมพ์ช่องว่าง
        พิมพ์ขึ้นบรรทัดใหม่
    res = n - 1
    ลูป h = res ถึง 0 (ส่วนล่าง)
        temp2 = h + n
        ลูป k = 0 ถึง temp2-1
            ถ้า (k == n+h-1) หรือ (k == n-h-1) พิมพ์ *
            ไม่เช่นนั้น พิมพ์ช่องว่าง
        พิมพ์ขึ้นบรรทัดใหม่
Step 2: ใน main() กำหนด n = 5 เรียก pattern(n)
STOP

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

#include <stdio.h>

void pattern(int n) {
    int len = 2 * n - 1;
    // ส่วนบน
    for (int i = 0; i < n; i++) {
        int temp = i + n;
        for (int k = 0; k < temp; k++) {
            if ((k == n + i - 1) || (k == n - i - 1))
                printf("*");
            else
                printf(" ");
        }
        printf("\n");
    }
    // ส่วนกลาง
    for (int m = 0; m < n - 2; m++) {
        for (int j = 0; j < len; j++) {
            if (j == 0 || j == len - 1)
                printf("*");
            else
                printf(" ");
        }
        printf("\n");
    }
    // ส่วนล่าง
    int res = n - 1;
    for (int h = res; h >= 0; h--) {
        int temp2 = h + n;
        for (int k = 0; k < temp2; k++) {
            if ((k == n + h - 1) || (k == n - h - 1))
                printf("*");
            else
                printf(" ");
        }
        printf("\n");
    }
}

int main() {
    int n = 5;
    pattern(n);
    return 0;
}

ผลลัพธ์

(แสดงรูปหกเหลี่ยมจากดอกจัน * ตามค่า n ที่กำหนด)