Still cannot find a way to sort first 20 numbers. I tried something like this :/
Code:
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *fp;
int i=1,k,j;
float numbers,average=0,now,temp,minimum;
if ( (fp=fopen("numbers.dat","wb+"))==NULL)
{
printf ("No such a file \n");
system("pause");
exit(1);
}
printf ("Enter number\n");
printf ("End ctrl+z \n");
while (!feof(stdin))
{
printf("Enter %d number : \n",i);
fscanf(stdin, "%f", &numbers);
if(feof(stdin))
{
break;
}
fwrite(&numbers, sizeof(float),1,fp);
i++;
}
i=0;
rewind(fp);
printf("Numbers you entered : \n");
while (1)
{
if (fread(&numbers, sizeof(float), 1, fp) != 1)
break;
printf("%f ", numbers);
average=average+numbers;
i++;
}
average=average/i;
system("pause");
rewind(fp);
/*SORTING*/
for (j=1; j<=20; j++)
{
minimum=fread(&numbers, sizeof(float), 1, fp);
for (k=j; k<=20; k++)
{
now=fread(&numbers, sizeof(float), 1, fp);
if (now<minimum)
{
temp=0;
temp=minimum;
minimum=now;
fseek(fp,j*sizeof(float),SEEK_SET);
fwrite(&minimum, sizeof(float),1,fp);
}
}
fseek(fp,k*sizeof(float),SEEK_SET);
fwrite(&temp, sizeof(float),1,fp);
}
/*SORTING*/
rewind(fp);
while (1)
{
if (fread(&numbers, sizeof(float), 1, fp) != 1)
break;
printf("%f ", numbers);
}
system("pause");
}