Không in được số lớn nhất và vị trí của nó ra file

#include <stdio.h>
#include <conio.h>
int i;
void docfile(int &n,float a[])
{
	FILE *f=fopen("input.txt","r");
	fscanf (f,"%d",&n);
	for(i=0;i<n;i++)
	fscanf(f,"%f",&a[i]);
	fclose (f);
}
int lonnhat(int &n,float a[])
{
	float max=a[0];
	for (i=0;i<n;i++)
	{
		if (max<a[i])
		max=a[i];
	}
	return max;
}
void ghifile (int &n, float a[])
{
	FILE *f=fopen("vitrilonnhat.txt","w");
	for (i=0;i<n;i++)
	{
		if (a[i]==lonnhat(n,a))
		fprintf(f,"so lon nhat %f co vi tri %d\n",a[i],i+1);
	}
	fclose(f);
}
int main()
{
	int n; 
	float a[10];
	docfile (n,a);
	ghifile (n,a);
	return 0;
}

Khi chay thì kết quả của em không được in ra file. Vậy đoạn code trên của em có lỗi gì ạ?. Mong các anh chị giải đáp

file input đây ạ
6
1.2 4.9 6.0 5.4 3.2 6.0

Có vài chỗ chưa ổn:

  • Giá trị kiểu float, trả về kiểu int?
  • Trong hàm lonnhat(), bạn đã lấy được số lớn nhất, sao không lấy luôn vị trí số đó? Rồi qua hàm ghifile() lặp thêm lần nữa cho tốn công vậy? Dùng struct cho giá trị trả về.
  • Trong lonnhat(), đã gán max = a[0] rồi, không cần lặp từ 0 nữa.
1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?