Để 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