codice:
#include <stdio.h>
#define LARG 4
#define LUNG 20
void carica(int a,int *n,int f[][LARG]){
int i=0;
if (!(*n)){
f[0][0]=a;
f[0][1]=1;
(*n)++;
}else{
while (i<(*n)){
if (f[i][0]==a){
f[i][1]++;
i=*n+1;
}else
i++;
}/*end while*/
if(i==*n){
f[*n][0]=a;
f[*n][1]=1;
(*n)++;
}/*end if*/
}/*end if else*/
}/*carica*/
void calcola(int f[][LARG],int n){
int tot=0,y;
for(y=0; y<n;tot+=f[y][1],y++);
printf("\n\n%d\n\n",tot);
tot=100/tot;
printf("\n\n%d\n\n",tot);
for(y=0; y<n;f[y][2]=f[y][1]*tot,f[y][3]=f[y][2], y++);
for (y=1 ; y<n ;f[y][3]=f[y][2] + f[y-1][3], y++);
}/*calcola*/
void stampa(int f[][LARG],int n){
int i;
for (i=0 ; i<n ; i++)
printf("%8d %8d %8d %8d \n", f[i][0] ,f[i][1] ,f[i][2] ,f[i][3]);
}/*stampa*/
int main(void){
FILE *fdati;
int a,n=0;
int f[LUNG][LARG];
if((fdati=fopen ("dati.txt","r"))==NULL){
printf("ERRORE");
return(1);
}/*end if apertura file*/
while(! feof(fdati)){
fscanf(fdati,"%d",&a);
printf("%d\n",a);
carica(a,&n,f);
}/*end while lettura da file*/
fclose(fdati);
calcola(f,n);
stampa(f,n);
return 0;
}/*main*/
ho cercato di renderlo simile a prima, dovresti comemntarla d+ perchè non avevo tempo.