01/10/2018, 11:42

Sửa lỗi bài tập C này giúp em với ạ

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;
}
Lương Thế Hải viết 13:59 ngày 01/10/2018

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

Võ Văn Linh viết 13:43 ngày 01/10/2018

mangA

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))

pham hong thai viết 13:53 ngày 01/10/2018

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

pham hong thai viết 13:53 ngày 01/10/2018

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

Lương Thế Hải viết 13:45 ngày 01/10/2018

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

pham hong thai viết 13:58 ngày 01/10/2018

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

Lương Thế Hải viết 13:44 ngày 01/10/2018

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

nghia viết 13:46 ngày 01/10/2018

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?

nghia viết 13:59 ngày 01/10/2018

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!

pham hong thai viết 13:46 ngày 01/10/2018

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

pham hong thai viết 13:47 ngày 01/10/2018

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

nghia viết 13:51 ngày 01/10/2018

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.

pham hong thai viết 13:49 ngày 01/10/2018

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ương Thế Hải viết 13:47 ngày 01/10/2018

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

pham hong thai viết 13:59 ngày 01/10/2018

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

nghia viết 13:51 ngày 01/10/2018

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.

pham hong thai viết 13:47 ngày 01/10/2018

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

pham hong thai viết 13:59 ngày 01/10/2018

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

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

Lương Thế Hải viết 13:49 ngày 01/10/2018

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

pham hong thai viết 13:44 ngày 01/10/2018

Cám ơn bạn nhiều. Bạn vui lòng giải thích cho mình là tại sao lại ko thể ghi là 2 cách kia được không. Và 2 cách mình vừa nói đó là gì vậy bạn

Bài liên quan
0