Kiểm tra giúp em bài C tìm bộ 3 phần tử liên tiếp có tích nhỏ nhất

Đề bài là nhập một dãy n số thực.Trong số các bộ 3 phần tử liên tiếp hãy tìm một bộ có tích nhỏ nhất.Hãy in bộ 3 phần tử và tích nhỏ nhất tìm được.
Bài em đây ạ.Em mới học C mong anh chị giúp đỡ

#include<stdio.h>
#include<math.h>
int main()
{
	int i,n;
	float x[100],min;
	printf("Nhap so phan tu n:");
	scanf("%d",&n);
	printf("Nhap phan tu:\n");
	for(i=1;i<=n;i++)
	{
		printf("x[%d]=",i);
		scanf("%f",&x[i]);
	}
	min=x[1]*x[2]*x[3];
	for(i=1;i<=n;i++)
	if(min>x[i]*x[i+1]*x[i+2])
	printf("bo 3 phan tu co tich nho nhat la %f %f %f\n",x[i],x[i],x[i]);
	printf("Tich nho nhat la %f",min);
    
}

Mình nghĩ là bạn làm rồi hỏi hướng dẫn về cách làm, kiểm tra giúp chỗ sai. Nên hỏi một cách thông minh. Chứ cứ up 1 đống code rồi bảo check hộ thì chẳng ai muốn giúp bạn đâu :slight_smile:
Về bài này phần kiểm tra min của bạn chưa đúng lắm. Cần xem lại về cách trình bày khi nhập xuất và nắm rõ nó. Phần đầu ổn nhưng nửa cuối khá lằng nhằng mà lại chẳng đúng

1 Like

bạn giúp mình phần thuật toán với.

mình nghĩ bạn nên có thêm 1 biến index lưu lại vị trí bắt đầu của bộ 3 có tích nhỏ nhất, và 1 biến min lưu lại tích nhỏ nhất. Lặp từ đầu mảng đến cuối mảng cách 3 phần tử (vì với 2 phần tử cuối thì k đủ tạo thành bộ 3), mới mỗi vòng lặp tại i, bạn tính tích bộ 3 bắt đầu từ i, so sánh với min hiện tại, nếu tích đó < min thì gán lại min bằng tích mới, gán lại index bằng i để lưu lại vị trí bắt đầu của bộ 3 có min nhỏ nhất.
lặp xong thì in ra min và 3 phần tử index, index + 1, index + 2 thôi

2 Likes

mình chưa hình dung được phần đầu bạn nói lắm bạn ví dụ hộ mình được k?

float min = x[1] * x[2] * x[3];
int minIndex = 1;
for(i = 2; i <= n-2; i++) {
    float temp = x[i] * x[i+1] * x[i+2];
    if (min < temp) {
        min = temp;
        minIndex = i;
    }
}
printf("bo 3 phan tu co tich nho nhat la %f %f %f\n",x[minIndex],x[minIndex+1],x[minIndex+2]);
printf("Tich nho nhat la %f",min);
3 Likes

có code của bác kia luôn đó bạn.

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