Nhờ giải thích giúp đoạn code đếm số lần xuất hiện của các phần tử trong mảng một chiều

đếm số lần xuất hiện của các phần tử trong mảng một chiều
em không hiểu chổ if( b[i] ) không đặt điều kiện ở trong là sao

#include<stdio.h>

int a[100];
int b[100];
int n;

void nhap(){
	printf("\nNhap n = ");
	scanf("%d", &n);
	for( int i = 0; i< n; i++ )
	{
		printf("\na[%d] = ", i+1);
		scanf("%d", &a[i]);
	}
	for( int i = 0; i< n; i++ ) 
		b[i] = 1; // gia tri a[i] tuong ung chua dc xet
}

void dem(){	
	printf("Gia tri \t so lan\n");
	
	for( int i = 0; i< n; i++ ){
		int count = 1;
		if( b[i] )
		{
			b[i] = 0; // da xet a[i]
			for( int j = 1+i; j < n; j ++ ){
				if( a[j] == a[i] ) {
					count++;
					b[j] = 0;
				}
			}
			printf("%5d\t\t%5d\n", a[i], count);
		}
	}
}

int main(){
	nhap();
	dem();
	return 0;
}

Format code lại cho dễ đọc bạn ơi, bôi đen rồi Ctrl + Shift + C:smiley:

nếu như mình k nhầm thì if(b[i]) đc hiểu như bạn đang gán b[i]==0

Mảng b thì có nhiệm vụ xét coi phần tử nào chưa được đếm (mang giá trị 1) đếm rồi thì nhận giá trị 0.
Còn if thì thử đoạn code này xem nó sẽ xuất ra dòng nào.

if(1)
  cout<<"Dong A";
else
  cout<<"Dong B";

R thử thay đổi 1 thành 0 rồi build and run.

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