ได้รับเมทริกซ์สี่เหลี่ยมจัตุรัส mat[row][column] โดย row และ column เท่ากันและเป็นจำนวนคี่ (ไม่หาร 2 ลงตัว) งานคือหาผลคูณของแถวกลางและคอลัมน์กลางของเมทริกซ์นั้น
เช่นในรูปด้านล่าง —

เงื่อนไข
- เมทริกซ์ต้องเป็นเมทริกซ์สี่เหลี่ยมจัตุรัส
- คอลัมน์และแถวต้องมีความยาวเป็นจำนวนคี่
ตัวอย่าง
อินพุต
mat[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
เอาต์พุต
ผลคูณของแถวกลาง = 120 ผลคูณของคอลัมน์กลาง = 80
คำอธิบาย
ผลคูณของแถวกลาง = 4 * 5 * 6 = 120 ผลคูณของคอลัมน์กลาง = 2 * 5 * 8 = 80
อินพุต
mat[][] = {{3, 5, 0}, {1, 2, 7}, {9, 0, 5}}
เอาต์พุต
ผลคูณของแถวกลาง = 14 ผลคูณของคอลัมน์กลาง = 0
วิธีการแก้ปัญหา
- รับเมทริกซ์ mat[][] เป็นอินพุต
- วนเมทริกซ์จากแถวกลางและคอลัมน์กลาง
- คำนวณผลคูณของแถวกลางและคอลัมน์กลางและคืนผลลัพธ์
อัลกอริทึม
Start
In function int product(int mat[][MAX], int n)
Step 1: ประกาศและกำหนด rproduct = 1, cproduct = 1
Step 2: Loop For i = 0 และ i < n และ i++
Set rproduct = rproduct * mat[n / 2][i]
Set cproduct = cproduct * mat[i][n / 2]
Step 3: Print "ผลคูณของแถวกลาง: rproduct"
Step 4: Print "ผลคูณของคอลัมน์กลาง: cproduct"
In function int main()
Step 1: ประกาศและกำหนด mat[][MAX] = {{1,2,3}, {4,5,6}, {7,8,9}}
Step 2: เรียก product(mat, MAX)
Stop
ตัวอย่างโค้ด
#include <stdio.h>
#define MAX 3
int product(int mat[][MAX], int n) {
int rproduct = 1, cproduct = 1;
// ตรวจสอบเฉพาะองค์ประกอบกลางและหาผลคูณ
for (int i = 0; i < n; i++) {
rproduct *= mat[n / 2][i];
cproduct *= mat[i][n / 2];
}
// พิมพ์ผลลัพธ์
printf("ผลคูณของแถวกลาง: %d\n", rproduct);
printf("ผลคูณของคอลัมน์กลาง: %d\n", cproduct);
return 0;
}
// โค้ดหลัก
int main() {
int mat[][MAX] = {
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 }
};
product(mat, MAX);
return 0;
}
ผลลัพธ์
หากรันโค้ดข้างต้นจะได้ผลลัพธ์ดังนี้ —
ผลคูณของแถวกลาง: 120 ผลคูณของคอลัมน์กลาง: 80