Problema proposto:

Creare un programma che legga 20 numeri da un txt...numeri incolonnati che possono anche irpetersi...
per esempio

23
54
32
23
65
32
76
23
ecc
ecc

il programma prende i numeri crea una specie di tabella con il numero quante volte compare e due percentuali...

qualcuno sa spiegarmi perche il programma si blocca e non riesco a completare il ciclo del programma correttamente?
lo ho complitato con TC in DOS perche a scuola nn abbiamo altro...

Grazie mille

codice:
#include <stdio.h>

#define MAX 20

FILE *fdati;

int a,n=0;
int f[MAX][4];


void CARICA()
{
	int i=0;
	if (n==0) { f[0][0]=a; f[0][1]; n++; }
		else
	{ while (i<n) { if (f[i][0]==a) { f[i][1]++; i=n+1; }
		else i++; }
	if (i>n) {f[n][0]=a ; f[n][1]=1; n++; } }
}

void CALCOLA()
{
	int x=0;
	inty,k;
	
	for (y=0 ; y<n ; y++)
	 { x=x+ f[y][1] ;}
	 
	for (y=0 ; y<n ; y++)
	 { f[y][2] =(100*(f[y][1])/x); f[0][3]=f[0][2]; }
	 
	for (k=1 ; k<n-1 ; k++)
	 { f[k][3]=f[k][2] + f[k-1][3]; } 

}

void STAMPA()
{
	int i=0;
	for (i=0 ; i<n ; i++) {
	printf("%8d %8d %8d &8d \n", f[i][0] ,f[i][1] ,f[i][2] ,f[i][3]); }
	}


int main()
{
	if((fdati=fopen ("dati.txt","rt"))==NULL) {printf("ERRORE"); return(1);}
	while (! feof(fdati))
	{fscanf(fdati,"%d",&a); printf("%d\n",a); CARICA();}
	CALCOLA();
	STAMPA();
	fclose(fdati);
}