Để dễ hiểu có thể xem hình minh họa:
Giả sử gọi cột cần xóa là
iColumn
và hàng cần xóa là iRow
thì cả 2 sẽ tạo nên 4 vùng. Chỉ có vùng phía trên bên trái giữ nguyên còn các vùng khác di chuyển theo hướng như trên hình. Vùng phía trên bên phải sẽ dịch sang trái 1 cột, vùng phía dưới bên trái sẽ dịch lên 1 hàng và vùng phía dưới bên phải sẽ dịch xéo lên phía trái.Như vậy ta sẽ minh họa cách làm bằng C/C++ như sau:
void DeleteRowColumn(int a[][20], int &m, int &n, int iRow, int iColumn) { for(int i=0;i<m;i++) for(int j=0;j<n;j++) { if(i < iRow && j >= iColumn) //Vùng phía trên bên phải a[i][j]=a[i][j+1]; else if(i >= iRow && j < iColumn) //Vùng phía dưới bên trái a[i][j]=a[i+1][j]; else if(i >= iRow && j >= iColumn) //Vùng phía dưới bên phải a[i][j]=a[i+1][j+1]; } m--; n--; }
Yeu cau voi pascal
Trả lờiXóađã chuyển code sang pascal và chạy ok
Trả lờiXóa