Giúp liệt kê trường hợp còn thiếu của bài toán

Bài toán: Thực hiện xóa hoặc chèn mảng tùy theo chế độ.

Dữ liệu: Vào từ thiết bị nhập chuẩn:

  • Dòng đầu tiên chứa số nguyên n – độ dài của mảng a (1 ≤ n ≤ 100),
  • Dòng thứ 2 nhập vào giá trị của mảng a.
  • Dòng thứ 3 nhập vào chế độ k bằng 0 hoặc 1 tương đương chế độ xóa hoặc chèn mảng.
  • Nếu k bằng 0:
    • Dòng thứ 4 là 2 số c và d thể hiện vị trí mảng cần xóa.
  • Nếu k bằng 1:
    • Dòng thứ 4 là số nguyên m - độ dài của mảng b cần chèn (1 ≤ m ≤ 100).
    • Dòng thứ 5 là giá trị của mảng b.
    • Dòng thứ 6 là số nguyên c thể hiện vị trí của mảng a mà tại đó mảng b được chèn vào.

Kết quả: Đưa ra thiết bị xuất chuẩn, kết quả của quá trình xóa hoặc chèn mảng.

#include <iostream>
using namespace std;

void Nhap(int[], int);
void Chen(int[], int&);
void Xoa(int[], int&);
void Xuat(int[], int);
int main()
{
    int n, k, a[1000];
    cin >> n;
    Nhap(a, n);
    cin >> k;
    if ( k == 0)
    {
        Xoa(a, n);
        Xuat(a, n);
    }
    else if ( k == 1)
    {
        Chen(a, n);
        Xuat(a, n);
    }
}

void Nhap(int a[], int n)
{
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
}
void Chen(int a[], int &n)
{
    int b[1000], m, c;
    cin >> m;
    Nhap(b, m);
    cin >> c;
    if(c < 0) return; //vị trí chèn nhỏ hơn 0 thì không chèn được
    else
    {
        for (int i = n, j = 0; j < m; i++, j++) // tạo khoảng trống để chèn
        {
            a[i] = a[c+j];
        }
        for(int i = c, j = 0; j < m; i++, j++) // ghi đè mảng b vào chỗ trống của bảng a
        {
            a[i+1] = b[j];
            n++;
        }
    }
}
void Xoa(int a[], int &n)
{
    int c, d, e;
    cin >> c >> d;
    if (c < 0 || c > n || d < 0) return; 
    else
    {
        e = d;
        for (int i = c; (n > d) ? (e <= n) : (i <= n) ; i++, e++) // xóa mảng từ vị trí c tới d
        {
            a[i] = a[e+1];
        }
        n > d ? n = n - (d - c + 1) : n = c;
    }
}
void Xuat(int a[], int n)
{
    for (int i = 0; i < n; i++)
    {
        cout << a[i] << " ";
    }
}

Mình nghĩ lâu rồi nhưng vẫn sai.

Sai thế nào bạn nhỉ?
Bạn cho IO ví dụ được không?

1 Like

@SITUVN.gcd tại vì mấy bài test được chạy thuộc Black Box nên mình không biết :frowning:

nếu nhập k không phải 0 hoặc 1 thì sao ?

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?