Gặp lỗi Segmentation fault C++

Mình đang gặp lỗi Segmentation fault ạ nhưng mình không biết nên sửa ở đâu. Mong mn giúp đỡ mình mới học C++ ạ. Đề bài mình đang làm là:

Cho một dãy số gồm n phần tử A1, A2, …, An. Hãy đếm số lượng bộ ba số trong n số, sao cho ba số đó tạo thành ba cạnh một tam giác, đồng thời tìm chu vi lớn nhất của một trong các tam giác đó.

#include <bits/stdc++.h>
#define maxn 100
using namespace std;
long long a[maxn],t,n;
    
int main() {
    cin>>n;
    for (int i=0;i<n;i++) cin>>a[i];
    for (int i=0;i<n;i++) 
        for (int j=i+1;j<n;i++) 
            for (int k=j+1;k<n;k++) 
                if (a[i]+a[j]>=a[k] && a[j]+a[k]>=a[i] && a[k]+a[i]>=a[j]) t++;
    cout<<t; 
    return 0;
}
1 Like

for (int j=i+1;j<n;i++)
should be
for (int j=i+1;j<n;j++) // j NOT i

2 Likes

I have solved the problem. Thank you very much :heart_eyes:

2 Likes

A hint for you:
Segment fault means an access outside the defined range. C and C++ usually work with pointers or addresses. Array elements are accessed via the index, which is like addressing:

(source: geeksforgeeks.com)
By the way: To make sure that such a segment fault does not occur, the indexing for the array range should be checked. Example:
if (n > max || n < 0) // Segment fault, do something…

1 Like

I got it! I submitted the program and this is the result. It’s all thanks to you
kq|465x499

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