Announcement

Collapse
No announcement yet.

Cách chèn 1 phần tử vào mảng động

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts
    13520747
    Nguyễn Trần Minh Tân

  • 13520747
    replied
    Originally posted by 11520563
    Support các bạn khác cũng là 1 các học mà
    Khi nào cần thì liên hệ anh: 01693862360
    Hoặc fb: https://www.facebook.com/xxvicon
    A sẽ support nhiệt tình nhất là phần debug
    dạ cảm ơn a ^^
    nhân tiện nói về debug
    ko hiểu sao lâu lâu e debug không được :3
    khi chạy tới câu lệnh "printf" thì máy tự động mở 1 loạt trang làm e hoảng :3
    lâu lâu thì lại chạy được

    Leave a comment:

  • 13520747
    Nguyễn Trần Minh Tân

  • 13520747
    replied
    Originally posted by 11520563
    Nếu thật sự chưa hiểu lắm thì có thể anh sẽ hỗ trợ em 1 buổi tại trường
    e sợ phiền a thôi ^^
    khi nào có dịp cần nhất định e sẽ tìm đến a

    Leave a comment:

  • 13520747
    Nguyễn Trần Minh Tân

  • 13520747
    replied
    :|
    Đã học cấp phát động thì phải biết giải phóng vùng nhớ. Nếu không biết cách giải phóng vùng nhớ đừng dùng cấp phát động.

    Em nên đọc tài liệu cho kỹ lưỡng hơn hoặc hỏi lại giáo viên
    dạ thực sự là cái này giáo viên chưa có dạy
    em chỉ muốn biết thêm thôi :3
    mà thôi, vấn đề của e đã được giải quyết
    dù sao cũng cảm ơn a ^^

    Leave a comment:

  • sinhvien.uit
    Administrator

  • sinhvien.uit
    replied
    Originally posted by 13520747 View Post
    vấn đề ở đây không phải là "sợ", mà là "cảm thấy" :3
    a có thể hướng dẫn e cách xoá 1 mảng ko ạ?
    :|
    Đã học cấp phát động thì phải biết giải phóng vùng nhớ. Nếu không biết cách giải phóng vùng nhớ đừng dùng cấp phát động.

    Em nên đọc tài liệu cho kỹ lưỡng hơn hoặc hỏi lại giáo viên

    Leave a comment:

  • 13520747
    Nguyễn Trần Minh Tân

  • 13520747
    replied
    Originally posted by 11520563
    Thử thay code kia xem chạy được không?
    hình như được rồi anh ạ :">
    cơ mà e vẫn chưa hiểu lắm
    e nghĩ mảng này chỉ có tối đa là n phần tử
    nếu như nhập 1 số không có trong mảng thì mảng sẽ không xoá, vẫn còn n phần tử
    vậy sao e lại có thể tăng thêm 1 phần tử được

    Leave a comment:

  • 13520747
    Nguyễn Trần Minh Tân

  • 13520747
    replied
    Sợ tốn thì xóa cái mảng cũ đi.
    vấn đề ở đây không phải là "sợ", mà là "cảm thấy" :3
    a có thể hướng dẫn e cách xoá 1 mảng ko ạ?

    Leave a comment:

  • sinhvien.uit
    Administrator

  • sinhvien.uit
    replied
    Originally posted by 13520747 View Post
    có cách nào khác không ạ?
    trưa nay e cũng đã nghĩ đến việc cấp lại 1 mảng khác
    nhưng e thấy như vậy thì tốn bộ nhớ quá
    theo e được biết thì khai báo động có ý nghĩa là tiết kiệm bộ nhớ mà :funny:
    Sợ tốn thì xóa cái mảng cũ đi.

    Leave a comment:

  • 13520747
    Nguyễn Trần Minh Tân

  • 13520747
    replied
    Cấp lại cái mảng khác.
    có cách nào khác không ạ?
    trưa nay e cũng đã nghĩ đến việc cấp lại 1 mảng khác
    nhưng e thấy như vậy thì tốn bộ nhớ quá
    theo e được biết thì khai báo động có ý nghĩa là tiết kiệm bộ nhớ mà :funny:

    Leave a comment:

  • 13520747
    Nguyễn Trần Minh Tân

  • 13520747
    replied
    Originally posted by 11520563
    Anh có thắc mắc: Ansi C sao lại có new ?
    trên lớp e đang học về Visual C, phần mảng động này cô dạy lý thuyết của e chỉ nói sơ qua chứ không hướng dẫn cụ thể và rõ ràng
    khi tạo box thì e chỉ thấy cái Ansi C này là có liên quan nhất
    còn cái lỗi a đưa ra thì e công nhận, nhưng vì e chưa chạy dc đoạn code này nên chưa phát hiện ra nó ạ :boss:
    với lại a chưa trả lời câu hỏi của e: có cách nào thêm 1 phần tử vào mảng động không ạ??

    Leave a comment:

  • sinhvien.uit
    Administrator

  • sinhvien.uit
    replied
    Originally posted by 13520747 View Post
    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:

    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++;
    }
    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.
    Cấp lại cái mảng khác.

    Leave a comment:

  • 13520747
    Nguyễn Trần Minh Tân

  • Cách chèn 1 phần tử vào mảng động

    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:

    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++;
    }
    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.
    13520747
    Nguyễn Trần Minh Tân
    Last edited by 13520747; 30-11-2013, 14:28.

LHQC

Collapse
Working...
X