ในบทความนี้ เราได้รับค่าของจำนวนแถวและจำนวนคอลัมน์หลายค่า เราต้องพิมพ์รูปแบบกล่อง (Box pattern) โดยที่ 1 จะถูกพิมพ์ที่แถวแรก คอลัมน์แรก แถวสุดท้าย คอลัมน์สุดท้าย และ 0 จะถูกพิมพ์ที่องค์ประกอบที่เหลือ ตัวอย่างเช่น:
Input : rows = 5, columns = 4
Output : 1 1 1 1
1 0 0 1
1 0 0 1
1 0 0 1
1 1 1 1
Input : rows = 8, columns = 9
Output : 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1
วิธีการแก้ปัญหา
วิธีง่ายๆ หนึ่งคือ วนลูปทุกแถวและทุกคอลัมน์ และตรวจสอบว่าองค์ประกอบอยู่ในแถวแรก แถวสุดท้าย คอลัมน์แรก และคอลัมน์สุดท้ายหรือไม่ ถ้าใช่ พิมพ์ '1' มิฉะนั้น เราอยู่ภายในขอบเขต พิมพ์ '0' ด้วยวิธีนี้ เราสามารถสร้างรูปแบบกล่องได้ตามที่เราต้องการ
ตัวอย่าง
using namespace std;
#include <bits/stdc++.h>
// ฟังก์ชันพิมพ์รูปแบบ
void create_pattern(int rows, int columns) {
int i, j;
for (i = 1; i <= rows; i++) {
for (j = 1; j <= columns; j++) {
// ถ้าองค์ประกอบอยู่ในแถวแรก/สุดท้าย หรือคอลัมน์แรก/สุดท้าย
if (i == 1 || i == rows || j == 1 || j == columns) {
cout << " 1";
} else {
cout << " 0";
}
}
cout << "\n";
}
return;
}
int main() {
int no_of_rows = 7;
int no_of_columns = 8;
create_pattern(no_of_rows, no_of_columns);
return 0;
}
ผลลัพธ์
1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
คำอธิบายโค้ด
- เรียกฟังก์ชัน create_pattern() ด้วยค่าจำนวนแถวและจำนวนคอลัมน์
- ลูปนอก for (i = 1; i <= rows; i++) เพื่อวนจาก 1 ถึง rows เพื่อไปผ่านแถว
- ลูปใน for (j = 1; j <= columns; j++) เพื่อวนผ่าน 1 ถึง columns เพื่อไปผ่านคอลัมน์
- ตรวจสอบ if (i == 1 || i == rows || j == 1 || j == columns) องค์ประกอบอยู่ในแถวแรก/สุดท้าย หรือคอลัมน์แรก/สุดท้าย พิมพ์ '1' สำหรับใช่ และ '0' สำหรับไม่ใช่
สรุป
ในบทความนี้ เราแก้ปัญหาการพิมพ์รูปแบบกล่องจากจำนวนแถวและคอลัมน์ที่กำหนด คือ รูปแบบของ 1 ภายใน 0 เรายังสร้างโปรแกรม C++ เพื่อแก้ปัญหานี้ เราสามารถสร้างโปรแกรมเดียวกันจากภาษาต่างๆ เช่น C, Java, Python ฯลฯ ได้ หวังว่าบทความนี้จะเป็นประโยชน์