30/09/2018, 23:48

Em không hiểu đoạn code sau nhờ anh chị giải thích giúp

đế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("
Nhap n = ");
	scanf("%d", &n);
	for( int i = 0; i< n; i++ )
	{
		printf("
a[%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 	 so lan
");
	
	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		%5d
", a[i], count);
		}
	}
}

int main(){
	nhap();
	dem();
	return 0;
}
anon10499953 viết 01:58 ngày 01/10/2018

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

Lê Thạc Kiên viết 02:01 ngày 01/10/2018

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

Lưu Thành Vương viết 01:54 ngày 01/10/2018

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.

Bài liên quan
0