В настоящее время я решаю задачу о динамическом распределении памяти, и она говорит, что я должен динамически выделить массив целых чисел, сохранить их в виде таблицы в файле, затем найти и напечатать среднее из этих чисел. Но когда это произойдетчтобы напечатать среднее, я получаю неправильные результаты.
#include <stdio.h>
#include <stdlib.h>
int main(){
FILE *fp=fopen("some.txt","w+");
printf("How many numbers are you going to input?\n");
int n,i;
scanf("%d",&n);
int *tab;
int sum=0;
tab=(int*)malloc(n*sizeof(int));
for(i=0;i<n && !(feof(fp));i++){
printf("Enter a number:\n");
scanf("%d",tab+i);
fprintf(fp,"%d",*(tab+i));
}
for(i=0;i<n && !(feof(fp));i++){
fscanf(fp,"%d",tab+i);
printf("%d\t",*(tab+i));
sum+=*(tab+i);
}
float mean=sum/(float)n;
printf("%f\n",mean);
free(tab);
}
Это пример ввода, и он должен напечатать все числа, которые я записал в файл, и в качестве значения среднего в концедолжен был напечатать 4.6666 (что-то вроде этого для этих конкретных трех входов)
How many numbers are you going to input?
3
Enter a number:
4
Enter a number:
5
Enter a number:
5
4 1.333333