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

โปรแกรม C วาดรูปเพชร (Diamond Pattern) หลายชั้น

สร้างรูปเพชรที่มีชั้นตามจำนวน n ที่กำหนด รูปจะมีความสูง (2n+1) แถว ประกอบด้วยตัวเลขและช่องว่าง

ตัวอย่าง n=3

      0
    0 1 0
  0 1 2 1 0
0 1 2 3 2 1 0
  0 1 2 1 0
    0 1 0
      0

หลักการ

  • แถวบนสุดและล่างสุด: พิมพ์ช่องว่าง 2n ช่อง แล้วตามด้วย 0
  • ส่วนกลาง: คำนวณช่องว่างและตัวเลขตามตำแหน่งแถว (i) เทียบกับ n

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

#include <stdio.h>

void print_pattern(int n) {
    int i, j;
    // บรรทัดแรก
    for (i = 1; i <= n * 2; i++) printf(" ");
    printf("0\n");

    // ส่วนกลาง
    for (i = 1; i <= (n * 2) - 1; i++) {
        // ช่องว่างหน้าตัวเลข
        if (i < n) {
            for (j = 1; j <= (n - i) * 2; j++) printf(" ");
        } else {
            for (j = 1; j <= (i % n) * 2; j++) printf(" ");
        }

        // ตัวเลข
        if (i < n) {
            for (j = 0; j <= i % n; j++) printf("%d ", j);
            for (j = (i % n) - 1; j > 0; j--) printf("%d ", j);
            printf("0");
        } else if (i > n) {
            for (j = 0; j <= n - (i - n); j++) printf("%d ", j);
            for (j = (n - (i - n)) - 1; j > 0; j--) printf("%d ", j);
            printf("0");
        } else {
            for (j = 0; j <= n; j++) printf("%d ", j);
            for (j = n - 1; j > 0; j--) printf("%d ", j);
            printf("0");
        }
        printf("\n");
    }

    // บรรทัดสุดท้าย
    for (i = 1; i <= n * 2; i++) printf(" ");
    printf("0");
}

int main() {
    int n = 3;
    print_pattern(n);
    return 0;
}