01/10/2018, 10:17

Nhờ giúp đỡ bài tập C: tìm giá trị chẵn nhỏ nhất trong mảng và tính tổng các số chẵn

em đang làm bài tập C: có câu này xin thỉnh giáo các cụ:
tìm giá trị chẵn nhỏ nhất trong mảng và tính tổng các số chẵn:
thanks các cụ đã giúp đỡ!

Henry viết 12:29 ngày 01/10/2018

số chẵn là chia 2 dư 0

Nguyễn Văn Buộc viết 12:33 ngày 01/10/2018

for(i=0;i<n;i++)
{
if(a[i]%2!=0&&a[i]>min)
min=a[i];
printf("%d ",a[i]);
}

ý của bạn là thế này? không phải đâu bạn à, mình làm hoài chưa ra

Dark.Hades viết 12:20 ngày 01/10/2018

a[i]%2!=0

bạn hiểu câu này thế nào?


Bài này nên chia làm 2 bài nhỏ.

  1. Tính tổng số chẵn. Tiện thể gán min vào 1 giá trị bất kì.
  2. Làm vòng for rồi tìm giá trị min (so sánh với min phía trên)
Phan Mưa Tinh viết 12:20 ngày 01/10/2018

Tào lao =D
nếu (a[i] % 2 == 0) && (a[i] < min)
thì gán min = a[i]

Xong hết vòng lặp ra ngoài mới in
Cậu không nên hỏi bài tập trên diễn đàn này

Nguyễn Văn Buộc viết 12:29 ngày 01/10/2018

thanks cậu mình làm ok rồi, nhầm 1 tý thôi

Nguyen Kien viết 12:22 ngày 01/10/2018

Thế ví dụ giá trị min mình gán lại là số lẻ nhỏ nhất thì sao nhỉ ?

Dark.Hades viết 12:29 ngày 01/10/2018

Thế ví dụ giá trị min mình gán lại là số lẻ nhỏ nhất thì sao nhỉ ?

Mình nói ở trên

  1. Tính tổng số chẵn. Tiện thể gán min vào 1 giá trị bất kì.

=> Số min đó đã nằm trong vòng lặp tính tổng số chẵn => nó bắt buộc là số chẵn

Nguyen Kien viết 12:24 ngày 01/10/2018

Theo mình nếu muốn chặt thì nên làm như thế này:

int16_t findPositionFirstEven(int32_t arr[], int16_t num){

	for (int16_t i = 0; i < num; ++i) {
		
		if(arr[i] % 2 == 0) 	return i;
	}

	return -1;
}

int32_t findMinimumEvenNumber(int32_t arr[], int16_t num){

	int16_t min = findPositionFirstEven(arr, num);

	if(min == -1) 	return -1;

	for (int16_t i = min + 1; i < num; ++i) {
		
		if(arr[i] % 2 == 0 && arr[i] < arr[min]){

			min = i;
		}
	}

	return arr[min];
}
rogp10 viết 12:20 ngày 01/10/2018

Số phần tử đúng ra là kiểu size_t.

Bài liên quan
0