Đề: Nhập vào mảng 1 chiều. tìm bộ ba số a=b+c trong mảng 1 chiều

Mọi người giúp em sao cho nó chỉ còn 1 cái a=b+c trong khi nó hiện cả 2 cái a=b+c và a=c+b luôn ạ. Em cảm ơn :sa:
image
Code:

#include <iostream> 
#include <cmath>
using namespace std; 
void nhap (int a[100], int &sl) { 
 cout << "\n nhap so luong phan tu: "; 
 cin >> sl; 
   for ( int i = 0; i<sl;i++) { 
      cout << "\n a["<<i<<"]= ";  
      cin >> a[i]; 
   }
}


void xuat ( int a[100],int sl) { 
   for ( int i = 0; i<sl;i++) { 
      for ( int j = 0; j<sl;j++) { 
       int s = a[i] +a[j]; 
        for ( int m = 0; m<sl;m++) {	
        	if (s==a[m]) cout << "\n cac cap so bang nhau la: " << s << "=" << a[i] <<"+" << a[j]; 
		}
	  }
   }
}
int main () { 
  int a[100], sl; 
  nhap (a,sl);  
  xuat (a,sl);
}

Mình nhìn qua có vẻ như ý tưởng của bạn là cộng đôi một lại với nhau. Nếu dùng 2 vòng for đều bắt đầu từ 0 thì các bộ số sẽ bị lặp. Thay vào đó vòng for thứ 2 chỉ cho chạy từ biến đếm của vòng for thứ nhất.

for(int i = 0;...;... ){
    for(int j = i;...;...){
    //bla bla
    }
}
7 Likes

Đỉnh ghê, làm theo ý của bạn ra bài r, cảm ơn bạn nhiều :smiley:

1 Like

Sắp xếp lại mảng thì sẽ không bị lặp nữa.

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