như tiêu đề ạ
em có 1 bài tập, yêu cầu đề bài là:
_Nhập mảng, xuất mảng vừa nhập
_Sắp xếp mảng tăng dần, xuất mảng vừa sắp xếp
_Xoá 1 phần tử và hiển thị mảng
_Chèn 1 phần tử sao cho mảng vẫn tăng dần, xuất mảng đó
em đã viết 1 bài như sau:
máy không báo lỗi nhưng khi chạy tới đoạn chèn 1 số thì bị máy báo "... stop working"
sau khi debug, mày mò cả buổi sáng, e đã phát hiện là khi khai báo mảng động thì số phần tử đã sử dụng của mảng được khởi tạo là tối đa rồi, nên không thể chèn theo cách thông thường được (tăng số phần tử lên và dịch các phần tử sang phải 1 ô)
vậy cho em hỏi có cách nào để chèn 1 phần tử vào mảng động không?
em sử dụng Visual Studio 2013 Professional.
em có 1 bài tập, yêu cầu đề bài là:
_Nhập mảng, xuất mảng vừa nhập
_Sắp xếp mảng tăng dần, xuất mảng vừa sắp xếp
_Xoá 1 phần tử và hiển thị mảng
_Chèn 1 phần tử sao cho mảng vẫn tăng dần, xuất mảng đó
em đã viết 1 bài như sau:
Code:
void nhapmang(int *&a, int n); void xuatmang(int *&a, int n); void hoanvi(int &a, int &b); void xoa(int *&a, int &n, int i); void chen(int *&a, int &n, int y, int i); void main() { int *a, n, x, y; printf("Nhap so luong phan tu: "); scanf_s("%d", &n); a = new int(n); nhapmang(a, n); xuatmang(a, n); for (int i = 0; i < n-1; i++) for (int j = i + 1; j < n; j++) if (a[i]>a[j]) hoanvi(a[i], a[j]); printf("Mang sau khi sap xep tang:\n"); xuatmang(a, n); printf("Nhap phan tu muon xoa: "); scanf_s("%d", &x); int kt = 0; for (int i = 0; i < n; i++) if (a[i] == x) { xoa(a, n, i); kt = 1; } if (kt == 0) printf("Phan tu ban nhap khong co trong mang\n"); else { printf("Mang sau khi xoa:\n"); xuatmang(a, n); } printf("Nhap phan tu muon chen: "); scanf_s("%d", &y); for (int i = 0; i < n; i++) if (a[i] > y) chen(a, n, y, i); printf("Mang sau khi chen:\n"); xuatmang(a, n); } void nhapmang(int *&a, int n) { for (int i = 0; i < n; i++) { printf("Nhap phan tu thu %d: ", i + 1); scanf_s("%d", &a[i]); } } void xuatmang(int *&a, int n) { for (int i = 0; i < n; i++) printf("%-2d", a[i]); printf("\n"); } void hoanvi(int &a, int &b) { int tam = a; a = b; b = tam; } void xoa(int *&a, int &n, int i) { for (int j = i; j < n; j++) a[j] = a[j + 1]; n--; } void chen(int *&a, int &n, int y, int i) { for (int j = n; j > i; j--) a[j] = a[j - 1]; a[i] = y; n++; }
sau khi debug, mày mò cả buổi sáng, e đã phát hiện là khi khai báo mảng động thì số phần tử đã sử dụng của mảng được khởi tạo là tối đa rồi, nên không thể chèn theo cách thông thường được (tăng số phần tử lên và dịch các phần tử sang phải 1 ô)
vậy cho em hỏi có cách nào để chèn 1 phần tử vào mảng động không?
em sử dụng Visual Studio 2013 Professional.
Comment