01/10/2018, 09:17

Code tìm số nguyên tố lớn nhất trong n số nguyên luôn ra kết quả là 0

Đây là chương trình tìm số nguyên tố lớn nhất từ n số nguyên nhập từ tệp không hiểu sai ở đâu mà khi trong tệp không có số nguyên tố nào mà nó vẫn in ra là: Số nguyên tố lớn nhất là: 0,00.
Mọi người sửa giúp mình với.

#include"stdio.h"
void nhap(FILE *,int *,int *);
int ktnt(int);
int dem_nt(int,int []);
int max_nt(int,int [],int *);
int main()
{
 float tbc;
 int i,n,x[100],d,max,b1,b2;
 FILE *a;
 a=fopen("snt.txt","r");
 nhap(a,&n,x);
 printf("Day vua nhap la:");
 for(i=1;i<=n;i++)
 printf("%4d",x[i]);
 d=dem_nt(n,x);
 printf("
Trong day co %d so nguyen to",d);
 b1=max_nt(n,x,&max);
 if(!b1) printf("
Day khong co so nguyen to");
 else   printf("
So nguyen to lon nhat la: %d",max);
 b2=tbc_nt(n,x,&tbc);
 if(!b2) printf("
Day khong co so nguyen to");
 else    printf("
TBC cac so nguyen to la: %.2f",tbc);
 }
 void nhap(FILE *a,int *n,int *x)
 {
 	fscanf(a,"%d",n);
 	for(int i=1;i<=*n;i++)
 	fscanf(a,"%d",&x[i]);
 }
 int ktnt(int x)
{   if(x==1) return 0;
	for(int i=2;i<=x/2;i++)
	if(x%i==0) return 0;
	return 1;
}
int dem_nt(int n,int x[])
{   
    int d=0;
    for(int i=1;i<=n;i++)
	if(ktnt(x[i])) d++;
	return d;
}
int max_nt(int n,int x[],int *max)
{
	int i=1;
	while(!ktnt(x[i])) i++;
	*max=x[i];
	for(i+1;i<=n;i++) 
	if(ktnt(x[i])&&x[i]>*max)
	*max=x[i]; 
	return 1;
}
Black viết 11:22 ngày 01/10/2018

Mọi người tìm giúp mình lỗi với sửa hoài vẫn không được.

Trần Hoàn viết 11:21 ngày 01/10/2018

hàm max_nt() bạn cho return 1;, thế nên b1 == 1 mọi lúc mọi nơi

Black viết 11:18 ngày 01/10/2018

Thế sửa kiểu gì vậy bạn mình sửa hoài vẫn không được

Black viết 11:32 ngày 01/10/2018

Thank mình sửa được rồi.

Bài liên quan
0