บทนำ
กำหนดเมทริกซ์ n×n ต้องการแปลงเป็น Diagonal Matrix ซึ่งเป็นเมทริกซ์ที่สมาชิกนอกเส้นทแยงมุมเป็น 0 ทั้งหมด ส่วนเส้นทแยงมุมคงค่าเดิม
ตัวอย่าง
Input: {{1,2,3}, {4,5,6}, {7,8,9}} → Output: {{1,0,3}, {0,5,0}, {7,0,9}}
แนวคิด
วนลูปทุกตำแหน่ง (i,j) ถ้า i ≠ j และ i+j+1 ≠ n (ไม่อยู่เส้นทแยงมุมหลักและรอง) ให้ตั้งค่าเป็น 0
ตัวอย่างโค้ด C++
#include <iostream>
using namespace std;
const int n = 10;
void diagonal(int arr[][n], int a, int m) {
for (int i = 0; i < a; i++) {
for (int j = 0; j < m; j++) {
if (i != j && i + j + 1 != a)
arr[i][j] = 0;
}
}
for (int i = 0; i < a; i++) {
for (int j = 0; j < m; j++)
cout << arr[i][j] << " ";
cout << endl;
}
}
int main() {
int arr[][n] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
diagonal(arr, 3, 3);
return 0;
}
ผลลัพธ์
1 0 3 0 5 0 7 0 9