30/09/2018, 16:15

Xóa k phần tử liên tiếp trong mảng, bắt đầu từ 1 vị trí x cho trước?

Em có bài tập như sau: Xóa k phần tử liên tiếp trong mảng, bắt đầu từ 1 vị trí x cho trước?

Em đã làm như thế này. Vấn đề là giải thuật của em nó chạy lòng vòng và em chưa biết cách giải quyết.

//==========================================================//
//=====================Câu 20===============================//
/*Xóa k phần tử liên tiếp vị trị ví x
*/
void xoaNhieuPhanTu(int a[], int &n, int viTriXoa,int soLuongXoa)
{
	for (int i = viTriXoa; i < n; i++)
	   {
		a[i] = a[i + 1];
	   }
	  n--;
	for (int i = viTriXoa; i < (soLuongXoa + viTriXoa )- 1; i++)
	  {
		xoaNhieuPhantu(a,n,i);
	  }
}
Nguyễn Minh Dũng viết 18:26 ngày 30/09/2018

Code của em đâu @Kelvin_Nguy_n? Forum mình không giống như Facebook, em đưa bài tập cho người khác giải. Forum mình thảo luận để giúp em giải bài tập.

Trên forum có bài này nói về vấn đề hỏi bài tập khá hay. Và còn có một bài viết nói về cách đặt câu hỏi như thế nào

Le Tran Dat – 13 Nov 14

Người mới học lập trình cần biết – Phần 1 – Học lập trình thông qua hỏi đáp

Là một lập trình viên chuyên nghiệp Đạt tích lũy được kinh nghiệm lập trình thông qua nhiều năm tự học và làm việc. Quá trình tự học đó kéo dài, nhưng chung quy lại việc học lập trình bao gồm các q…

Kelvin Nguyễn viết 18:24 ngày 30/09/2018

http://codepad.org/B0XUh6a4 Do em đang làm 1 bài tập lớn. Bài này chỉ là 1 trong 32 bài em đang làm thôi. Nên code khá dài và nhiều,
Bài này nằm ở line 488-513

Thực tế khắc nghiệt viết 18:29 ngày 30/09/2018

vào đây nè kevin

từ từ nhé đọc cái này xong rồi làm theo. forum mình theo hướng thảo luận để cùng học và giải đáp

Nguyễn Minh Dũng viết 18:19 ngày 30/09/2018

Anh đã sửa nội dung lại rồi đấy, em thêm phần em bị lỗi chỗ nào nữa là được

Vấn đề là em bị … và em chưa biết cách giải quyết.

Thực tế khắc nghiệt viết 18:16 ngày 30/09/2018

Anh đã sửa nội dung lại rồi đấy, em thêm phần em bị lỗi chỗ nào nữa là được

cay quá xíu làm mấy hàm thêm xoá cập nhật chèn mảng 1 chiều lun anh nhờ

Kelvin Nguyễn viết 18:25 ngày 30/09/2018

ủa, sao em không thấy sữa gì hết

Nguyễn Minh Dũng viết 18:19 ngày 30/09/2018

A sửa lại cách trình bày câu hỏi của em cho nó dễ hiểu đấy Kelvin ơi Anh có biết em bị lỗi gì đâu?

Kelvin Nguyễn viết 18:28 ngày 30/09/2018

Nếu chung là bài này e chưa biết làm. A chỉ em làm với.Bí lắm luôn rồi

Nguyễn Minh Dũng viết 18:24 ngày 30/09/2018

À, tại cách suy nghĩ của em nó bị nhầm lẫn, anh cho em bài giải nhé. Không phải vì em bí mà anh cho bài giải, mà vì em đã làm, và làm không được anh mới đưa em bài giải

#include <stdio.h>

#define SIZE 10

void xoaNhieuPhanTu(int a[], int *n, int viTriXoa,int soLuongXoa)
{
    for(int i = viTriXoa; i < *n - soLuongXoa; ++i)
        a[i] = a[i+soLuongXoa];
    *n -= soLuongXoa;
}

int main()
{
    int a[SIZE] = {0,1,2,3,4,5,6,7,8,9};
    int n = SIZE;
    xoaNhieuPhanTu(a, &n, 3, 2);

    printf("Mang moi\n");
    for(int i = 0; i < n; ++i)
        printf("%d ", a[i]);
    return 0;
}

P/S: Em đặt tên biến, tên hàm rất tốt, dễ hiểu, anh thích em rồi đấy

Kelvin Nguyễn viết 18:28 ngày 30/09/2018

Con trỏ chưa học anh ơi

Nguyễn Minh Dũng viết 18:26 ngày 30/09/2018

Thế em đổi con trỏ lại thành reference. Vì cái em đang học là C, nhưng thầy cô lại dạy C++. Tức là sử dụng dấu & (reference) hay còn gọi là tham chiếu.

Em cứ thay con trỏ bằng & nếu em thích và sử đụng như em hiểu. Anh chỉ dùng con trỏ để cập nhật lại giá trị của n.

Đây là code sử dụng & nếu em không biết cách chuyển, vì em chưa học con trỏ.

#include <stdio.h>

#define SIZE 10

void xoaNhieuPhanTu(int a[], int &n, int viTriXoa,int soLuongXoa)
{
    for(int i = viTriXoa; i < n - soLuongXoa; ++i)
        a[i] = a[i+soLuongXoa];
    n -= soLuongXoa;
}

int main()
{
    int a[SIZE] = {0,1,2,3,4,5,6,7,8,9};
    int n = SIZE;
    xoaNhieuPhanTu(a, n, 3, 2);

    printf("Mang moi\n");
    for(int i = 0; i < n; ++i)
        printf("%d ", a[i]);
    return 0;
}

Chú ý quan trọng: & mang ý nghĩa tham chiếu chỉ có trong C++, không có trong C.

Kelvin Nguyễn viết 18:19 ngày 30/09/2018

Tức là những chổ nào có dấu * thay bằng & hả anh?

Nguyễn Minh Dũng viết 18:27 ngày 30/09/2018

Anh đã update ở trên, em để ý nhé. Anh thích những câu hỏi rõ ràng, khó đến mấy anh cũng cố giải quyết (P/S: Khi anh nông nổi)

Chứ mấy câu @Honey_moon hỏi khó quá anh cũng không trả lời :trollface:

Thực tế khắc nghiệt viết 18:24 ngày 30/09/2018

Tức là những chổ nào có dấu * thay bằng & hả anh?

thực sự có 1 cách nữa là bạn tạo 1 mảng mới gồm những phần tử còn lại của mảng cũ chả bjo thấy A Đạt khen em đặt tên hay code đẹp. em đặt tên biến con lạc đà cơ mà :trollface:

Thực tế khắc nghiệt viết 18:29 ngày 30/09/2018

hỏi khó quá anh cũng không trả lờ

khó với lười nó khác nhau. thông thường em bí mới dụ dỗ câu kéo lừa lọc thông đồng gọi anh thôi.

Nguyễn Minh Dũng viết 18:19 ngày 30/09/2018

Em còn đặt tên biến i,j,l,m,n,k, nữa không? Khen người mới chứ ai khen ma cũ :trollface:

Nguyễn Minh Dũng viết 18:26 ngày 30/09/2018

I moved 2 posts to a new topic: sắp xếp các phần tử chẳn dồn về trước và xếp tăng dần, các phần tử lẽ về cuỗi mãng và cũng xếp tăng dần

Thực tế khắc nghiệt viết 18:22 ngày 30/09/2018

Em còn đặt tên biến i,j,l,m,n,k,

biến i và j cho for biến n cho số lượng phần tử n=number còn lại là đặt dài. thế hàm hoán vị nhỏ mà a đặt dài loàng ngoàng à

Bài liên quan
0