Hỏi kinh nghiệm học lập trình

Câu hỏi chính của em là: Có khi nào mọi người dành rất nhiều thời gian để hiểu tại sao chương trình của mình không hoạt động và vẫn không biết dù đoạn code khá ngắn không ạ? Khi đó mọi người có mọi người có bỏ qua nó không ạ? :weary:
Nấu câu trả lời của mọi người là bỏ qua, thì không cần đọc câu hỏi dưới đâu ạ! :sweat_smile:
Câu hỏi phụ cho câu hỏi trên:
Em có một bài toán: Nhập vào nl; in ra các nhị phân độ dài n trong đó không tồn tại dãy con độ dài l cạnh nhau giống nhau.
Em dựng hàm kiểm tra xem một mảng kích thước n có tồn tại dãy con độ dài l cạnh nhau không, nếu không thì trả về 1, nếu có thì trả về 0.

void inMang(int * a, int batDau, int ketThuc); // In ra mảng từ a[batDau] đến a[ketThuc]
int kiemTra(int *a, int n, int l);
void dayNhiPhan(int *a, int n, int l, int i); // Tạo các dãy nhị phân bằng quay lui

int main()
{
    int a[100] = {0}; 
    int n = 0, l = 0;
    scanf("%d %d", &n, &l);

    dayNhiPhan(a, n, l, 0);

    return 0;
}

void inMang(int *a, int batDau, int ketThuc)
{
    for (int i = batDau; i <= ketThuc; i ++)
        printf("%d", a[i]);
    printf("\n");
}
int kiemTra(int *a, int n, int l)
{
    int ketQua = 0;
    if (n < 2*l) return 1;
    for(int i = 0; i <= n - 2*l; i ++)
    {
        ketQua = 0;
        for (int j = 0; j <= l - 1; j ++)
            if (a[i + j] != a[i + l + j])
                ketQua = 1;
        if (ketQua == 0) return 0;
    }
    return ketQua;
}
void dayNhiPhan(int *a, int n, int l, int i)
{
    for (int j = 0; j <= 1; j ++)
    {
        a[i] = j;
        if (i == n - 1 && kiemTra(a, n, l)) inMang(a, 0, n - 1);
        else dayNhiPhan(a, n, l, i + 1);
    }
}

Khi chạy thì gặp lỗi Segmatation fault. Sử dụng Debugger thì lỗi xảy ra ở:

if (i == n - 1 && kiemTra(a, n, l)) inMang(a, 0, n - 1);
else dayNhiPhan(a, n, l, i + 1);

Chốt lại vẫn là hỏi bài tập :smiley:

1 Like

không phải đâu ạ! Em thấy nản với bài tập này quá, giờ có chữa được hay không cũng không thiết tha lắm ạ!

Lâu ko dùng C nhưng thử để gán 1 cái biến kt = kieermtrar rồi if đi
đừng có ghi kiểu vậy hàm kiểm tra trả về số nguyên mặc định !=0 là true nên chỗ đó làm vậy hơi phức tạp có thể ko compiler đc làm hản hoi thử

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