Giúp sửa lỗi bài tập nhập và tính tổng mảng

bài này em nhập kết quả cứ tới phần tủ cuối cùng là chương trình đứng ngay
code:

int tongArray(int array[], int kichThuocMang);
int main(int argc, char* argv[]) {
    int mangA[10];
    //khoi tao cac gia tri trong mang
    int i;
    for(i = 0; i < 10; i++) {
        printf("Phan tu %d: ", i);
        scanf("%d", &mangA[i]);
    }
    // hien thi tong array len man hinh
    printf("%d", tongArray(mangA[i], 10));
    return 0;
}
// function tinh tong cac gia tri cua mangA
int tongArray(int array[], int kichThuocMang) {
    int Tong = 0; // bien de luu tong cac gia tri cua mangA
    int i;
    for(i = 0; i < kichThuocMang; i++) {
        Tong += array[i];
    }
    return Tong;
}

Khi build không báo lỗi à bạn?

Hàm tongArray nhận vào tham số là 1 mảng và số nguyên. Trong hàm main bạn sửa lại là : printf("%d", tongArray(mangA, 10))

nó báo là has stop working đó bạn

Tại sao lại như vậy vậy bạn Có phải tại vì %d ko

Bạn đang dùng gì để code vậy? Compiler của bạn không báo lỗi gì sao

mình dùng codeblock do anh ĐẠt giới thiệu đó bạn, chương trình ko báo lỗi chỉ báo là has stop working

Bạn đã đọc ở phần báo lỗi chưa?

Chào bạn NanhNanh!
Cho mình hỏi bạn biết mảng là gì và phần tử mảng là gì?
Cách viết mảng và cách viết phần tử mảng?

Chào bạn NanhNanh!

int i;
i++// trong for dừng khì i =10

vậy bạn hiểu lỗi của bạn chưa!

em liệt kê phần tử mảng băng vòng for đó anh, viết 1 tham số mảng thì mình dùng array[]
Bạn giải thích rõ hơn lỗi của mình được không tại mình hơi chậm :smiley:

nó có báo thế này nè bạn
warning: passing argument 1 of ‘tongArray’ makes pointer from integer without a cast|

Chào NanhNanh!
bạn phải hiểu sự khác biệt giữa 2 đoạn code sau:
1.

int i;
for(i < 0; i < n; i++){}
printf("%d", i);
for(int i = 0; i< n ; i++){}
printf("%d", i);

điểm giống nhau của (1) và (2) là chúng đều thực thi n lần. Khác biệt là (1) compile sẽ in ra màn hình là n. (2) compile sẽ thông báo lỗi! vì biến i là biến cục bộ trong vòng lặp for.

Mình có hơi hiểu ý bạn nói có phải là do Mình chỉ gửi vào tham số là mangA[10] thôi đúng ko bạn. Nếu muốn đúng thì phải gửi vào nguyên 1 mang bằng cách gõ mangA[] hoặc *mangA đúng ko bạn

Lỗi của bạn là truyền không đúng kiểu của đối số
Bạn truyền vào kiểu giá trị int trong khi bạn đặt nó là int [] có lẽ là do bạn chưa hiểu về mảng.
Cách giải quyết:

chuyển printf("%d", tongArray(mangA[i], 10)); thành printf("%d", tongArray(mangA, 10));mangA[i] không phải là mảng mà mangA mới là mảng

in ra màn hình n - 1 phải không bạn. compiler của mình không cho khai báo int i = 0 trong vòng for. Mình xài IDE codeblock

Chào NanhNanh!
Bạn hiểu mảng không? 10 pt trong mảng từ 0 -> 9 bạn gửi thằng 10 làm gì có.
Mảng trong C:

  • cùng loại data type
  • Liền kề nhau
  • Là 1 con trỏ trỏ tới đầu phần tử của mảng là vị trí phần tử 0.
*mangA // là giá trị của phần tử A[0]

Bạn nên học lại mảng.

cám ơn chia sẽ của bạn tại mình đang học mảng. chắc từ giờ tới chiều còn hỏi nhìu nhìu mấy bạn chịu khó lên coi và giải đáp giúp mình với

Nếu mình ghi là mangA[] hoặc *mangA thì oke đúng không bạn hoặc chỉ ghi mangA

như ở phần giải quyết của mình
không ghi mảng mangA[] hoặc *mangA

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