Tính tổng giá trị của các phần tử trong mảng a


mọi người ơi sửa giúp e bài này với ạ.

Bạn để phần khai báo biến sum ra ngoài vòng lặp là được.

vẫn in ra kết quả như vậy . sửa lại như nào nhỉ cậu.

in ra kết quả như vậy là kết quả của đoạn code nào?

mình bỏ sum ra ngoài rồi vẫn in ra kq như vậy

Vì bạn đang liên tục truy xuất đến phần tử đầu tiên trong mảng qua con trỏ ptr

1 Like

vậy làm cách nào để chạy được tổng vậy cậu. tại mình mới học phần con trỏ nên hơi lơ mơ

Bạn truy cập đến phần tử của mảng qua con trỏ giống như cú pháp bạn dùng cho mảng.

4 Likes

Cứ viết a[i] bình thường :smiley:

Nhưng nếu đã dùng con trỏ thì phải ptr++ ở một vị trí nào đó.

1 Like

A post was split to a new topic: Tăng giá trị con trỏ kiểu int trong C

int getSum(int *a, int n){
    int *ptr;
     int sum=0;
   for(int i=0; i<n; i++) {
       sum+=a[i];
    }  ptr++;
}

như này ak cậu.

ai xem giúp với vẫn lỗi kq

ý bạn bên trên là có 2 cách, 1 là dùng a[i], 2 là dùng con trỏ, nhưng có vẻ như đề bài yêu cầu dùng con trỏ cho quen nên chỉ dùng con trỏ thôi ko dùng a[i] nữa. Bạn thử sửa thành ntn xem có đc ko:

int getSum(int *a, int n){
    int sum=0;
    for(int i=0; i<n; i++) {
        sum+=*a;
        a++;
    } 
    return sum;
}

ak hóa ra cho *a rồi mihf lại gọi thêm *ptr

nãy quên return, bạn làm ở web nào có cả mấy kịch bản test trông hay vậy?

ak mình làm trên hệ thống bài tập của trường cấp cho

cho thêm *ptr thì vẫn chạy thôi nhưng nó phí bộ nhớ, vừa quên return cho hàm thôi bạn.

1 Like
int getSum(int *a, int n)
{
    int sum = 0;
    for (int i = 0; i < n; i++)
    {
        sum += *(a + i);
    }
    return sum;
}
1 Like

Viết nó đơn giản đi:

int sum = 0;
for(int idx=0;idx<n; idx++){
    sum += a[i];
}
2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?