Đề này chắc là cho số dòng làm tham số thứ 2 của void Nhap và Xuat nhỉ.
Về cơ bản là không có gì là không thể, chỉ là báo hiệu code sẽ phức tạp và xấu.
Mò mẫm đề 1 tí:
Nếu tham số thứ 2 là số dòng thì cứ bắt tay vào làm.
mã giả vờ
void Nhap(int* _matrix, int _rows) {
for (int i = 0; i < _rows; i++) {
char* line;
// đọc 1 dòng vào biến line
// tách line thành mảng các số
int* new_row = break_line_to_numbers(line);
int _cols = sizeof(new_row) / sizeof(new_row[0]);
// magic là đây: rã mảng 2 chiều thành 1 chiều rồi làm như mảng 2 chiều thật
// nối tiếp mảng new_row vào đuôi _matrix từ vị trí (i * _cols) đến ((i+1) * _cols - 1)
}
}
void Xuat(int* _matrix, int _rows) {
int _cols = (sizeof(_matrix) / sizeof(_matrix[0])) / _rows;
for (int i = 0; i < _rows; i++) {
for (int j = 0; j < _cols; j++) {
// tiếp tục magic trên
printf("%d ", _matrix[i * _cols + j];
}
printf("\n");
}
}
Nếu tham số thứ 2 là số cột thì làm gần tương tự.
tìm điểm khác biệt
Hàm Nhap()
lúc này sẽ viết 1 vòng for đọc từng dòng cho đến khi không thể đọc được nữa, có 1 biến _rows
sẽ tăng dần, quy trình còn lại thì y hệt trường hợp trên.
Nếu tham số thứ 2 là số khác thì đọc đề chửi đề xé đề đi về
thôi chứ còn làm gì nữa.