30/09/2018, 16:20

Xóa mảng từ vị trí từ 1 vị trí cho trước tới cuối mảng?

Em đã làm 2 tiếng đồng hồ nhưng vẫn không ra!
Đây là code em viết. mong mọi người kiểm tra giúp em!

#include<stdio.h>
#include<conio.h>
int nhap(int a[],int n)
{
    for(int i=0; i<n; i++)
    {
        printf("a[%d]=",i);
        scanf("%d",&a[i]);
    }
}
int xoamang(int a[],int &n,int vitrixoa)
{
    for(int j=vitrixoa; j<n; j++)
    {
        for(int i=vitrixoa; i<n-1; i++)
        {
            a[i]=a[i+1];
            n--;
        }
    }
}
int xuatmang(int a[],int n)
{
    for(int i=0; i<n; i++)
    {
        printf("%d	",a[i]);
    }
}

main()
{
    int a[100],n=5,vitrixoa=2;
    nhap(a,n);
    printf("
");
    xoamang(a,n,vitrixoa);
    xuatmang(a,n);
}
Trần Hồng Phong viết 18:22 ngày 30/09/2018

Thuật toán của em là sao mà phức tạp vậy? Lười đọc quá Em chỉ cần chạy từ vị trí đó tới cuối mảng gán lại mảng = giá trị mà em mặc định là rỗng (em tự chọn, 0 chẳng hạn) sau đó resize lại n thôi (n = vitri). Nếu không cần thiết gán lại thì em resize n thôi cũng được

nguyen khang viết 18:27 ngày 30/09/2018

cám ơn anh nhiều nhé!
để em làm lại !

Hồ Thế Chín viết 18:27 ngày 30/09/2018

cần gì hả bạn,muốn hiển thị ra mảng đã xóa rồi thì chỉ cần for từ 0 đến vị trí xóa thôi là xong

kongdap viết 18:20 ngày 30/09/2018

Mình Sửa lại như thế này bạn test xem thử.

void xoamang(int a[],int &n,int vitrixoa)
{
    for(int i = vitrixoa; i < n; i++)
        a[i] = a[i+1];
    n--;
}

mà bạn viết hàm nếu hàm đó không trả về giá trị nào thì nên dùng hàm void. còn dùm hàm kiểu int thì phải return về một giá trị có kiểu là int

nguyen khang viết 18:30 ngày 30/09/2018

cám ơn bạn .
code của bạn là xóa một phần tử bất kì mà. ý mình là xóa từ vị trí bắt đầu xóa cho tới cuối mảng luôn.!

Bài liên quan
0