Mình dùng 4 cạnh của hình vuông(HCN) để giới hạn mảng, sau mỗi vòng lặp thì bán kính HV(HCN) thu nhỏ lại 1 đ.vị, cứ thế in mãi đến khi đủ số lượng phần tử của mảng thì dừng.
Code này áp dụng cho cả ma trận m x n bình thường chứ ko nhất thiết phải ma trận vuông, code C++:
#include <iostream>
using namespace std;
void In(int arr[][3], int soDong, int soCot)
{
int dong = soDong - 1, cot = soCot - 1;
int i = 0, j = 0;
int dem = 0;
while (dem != soDong * soCot)
{
for (int k = j; k <= cot; k++)
cout << arr[i][k] << '\t';
i++;
for (int k = i; k <= dong; k++)
cout << arr[k][cot] << '\t';;
cot--;
for (int k = cot; k >= j; k--)
cout << arr[dong][k] << '\t';;
dong--;
for (int k = dong; k >= i; k--)
cout << arr[k][j] << '\t';;
j++;
dem++;
}
}
Chạy thử:
int main()
{
int a[][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
In(a, 3, 3);
int b[][3] = { 3,4,7,6,8,3,4,9,0, 6, 7, 8};
In(b, 4, 3);
system("pause");
return 0;
}