Witam.. mam do napisania program, który sortuje słowa wczytane z pliku ze względu na ich długość..na początku postanowiłem, ze napisze program, który sortuje liczby wczytane z pliku przez kopcowanie, a następnie przerobie go, by sortował słowa.. z samym algorytmem sobie poradziłem, wystąpił natomiast problemu w czasie wczytywania danych z pliku. Mianowicie: czy da rade wrzucic zczytywanie danych z pliku do jakiejs pętli(pogrubiony fragm. kodu, aby mozna było zczytywać dane aż do konca pliku, a nie z góry narzuconą ilość danych?po drugie, czy ktoś mogłby zaproponować jakis sposob przerobienia programu, aby sortował słowa ze względu na długośc? myslałem, aby każde słowo zczytywać do oddzielnej tablicy, a następnie porównywać tablice..ale nie wiem jak to zapisać w C. Wszystkie rady mile widziane:) oto kod:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int d[100], i, j, k, x, m,a;
FILE * pFile;
pFile = fopen ("myfile.txt","r");
{ foo fscanf (pFile, "%d", &d[1]);
fscanf (pFile, "%d", &d[2]);
fscanf (pFile, "%d", &d[3]);
fscanf (pFile, "%d", &d[4]); ->>>>
fscanf (pFile, "%d", &d[5]);
fscanf (pFile, "%d", &d[6]);
fscanf (pFile, "%d", &d[7]);
fscanf (pFile, "%d", &d[8]); foo
}
fclose (pFile);
for( i=2; i<9; i++)
{
/pozycja wstawianiego elementu/ j=i;
/poziom drzewa/ k=(j/2);
/wartośc wstawionego elementu/ x=d[i];
while((k>0) &&(d[k] < x))//d[k]-wartosc przodka, x=wartosc elementu w tablicy
{ d[j]=d[k];
j=k; k=(j/2);
}
d[j]=x;
}
for(i =1 ; i <9; i++)
printf("%d\n", d[i]);
for(i = 8; i > 0; i--)
{
x = d[1]; d[1] = d[i]; d[i] = x;
j = 1; k = 2;
while(k < i)
{
if((k + 1 < i) && (d[k + 1] > d[k]))
m = k + 1;
else
m = k;
if(d[m] <= d[j]) break;
x = d[j]; d[j] = d[m]; d[m] = x;
j = m; k = j + j;
}
}
printf("po\n");
for(i = 1; i <9; i++)
printf("%d\n", d[i]);
system("PAUSE");
return 0;
}