Code bải tập cắt mảng dựa trên giá trị cho trước không in ra được mảng mới

Đề bài của em là:

Viết 1 function so sánh tất cả các giá trị chứa trong mảng, nếu giá trị đó lớn hơn biến số giatriMax thì chuyển nó bằng 0 và xuất ra mảng mới.

Code của em, lúc chạy thì không thể xuất ra mảng mới đã sửa được :frowning:

Source code:

#include <stdio.h>
#include <stdlib.h>

void maxArray (int array[], int kichThuoc, int giatriMax);

int main(int argc, char *argv[])
{
    int array[5] = {15,9,4,7,10};
    int kichThuoc, giatriMax;
    maxArray(array,kichThuoc,giatriMax);
    printf("Mang moi chuyen thanh: \n");
    for (int i = 0 ; i < kichThuoc; i++)
    {
        printf ("array[%d] = %d\t",i,array[i]);
    }

    return 0;
}

void maxArray (int array[], int kichThuoc, int giatriMax)
{
    giatriMax = 7;
    for (int i = 0; i < kichThuoc; i++)
    {
        if (array[i] > giatriMax)
        {
            array[i] = 0;
        }
        else 
        {
            array[i] = array[i];
        }
    }
}

Bạn có thèm gán giá trị của kích thước đâu :slight_smile: còn giatriMax = 7; thì bạn nên bỏ dòng đấy đi (mình nghĩ là bạn đang test, đừng test kiểu thế, bạn lại quên xóa và lỗi nữa đấy), đã có tham số thì tại sao phải set giá trị trong hàm đó chứ?
Biến kichThuoc được khởi tạo nhưng không có giá trị nên mặc định bằng 0 => các vòng lặp của bạn không chạy.
Lưu ý: khi code không chạy ra đúng như ý muốn, bạn học cách debug, debug đơn giản nhất là dùng printf và in ra giá trị của các biến theo từng bước mà bạn cảm thấy là đáng nghi nhất.
P/s: tự mình làm thì mình mới nhớ lâu và tư duy mới tiến bộ được nha bạn. Chúc bạn thành công.

1 Like

Biến kichThuoc trong hàm không có giá tri. Chưa có chỗ nào gán giá trị cho nó cả

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