ได้รับจำนวนเต็ม 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 ที่กำหนด)