Salve, sono uno studente d'informatica e attualmente sto studiando il linguaggio C.
C'è un esercizio cui traccia mi chiede questo:
Definire tipi di record con i seguenti campi: paese, regione, abitanti.
Dichiarare il record di nome 'paesi' del tipo indicato sopra.
Creare il file 'media.dat' ad accesso casuale di 4 record del tipi sopra indicato.
Inizializzare i record del file con valori vuoti o zero, e poi definire un ciclo per inserire tutti i 4 record in input da tastiera.
Infine dal file leggere il numero di abitanti, calcolarne la media e visualizzare la media. (Lettura, calcolo media e visualizzazione) tramite una funzione.
#include <stdio.h>
#define SIZE 40
struct clientData{char paese[SIZE];char regione[SIZE];int abitanti;};//DEFINIZIONE TIPO DI RECORD
void media(FILE *fPtr);
int main()
{
int i,j;
double rit;
struct clientData paesi={"","",0};
FILE*cfPtr;
if((cfPtr=fopen("media.dat","wb"))==NULL){
printf("Il file non può essere aperto\n");}
else{
for(i=0;i<4;i++){printf("\nInserisci Paese, Regione e Abitanti:\n");
fscanf(stdin,"%s%s%d",paesi.paese,paesi.regione,&paesi.abitanti);
fseek(cfPtr,i*sizeof(struct clientData),SEEK_SET);
fwrite(&paesi,sizeof(struct clientData),1,cfPtr);
}
fclose(cfPtr);
}
return 0;}
void media(FILE *fPtr){
struct clientData paesi={"","",0};
int tot,temp;
int b;
double med;
tot=0;
for(b=0;b<4;b++){
temp=fread(&paesi.abitanti,sizeof(int),10,fPtr);
fseek(fPtr,sizeof(struct clientData),SEEK_SET);
tot=temp+tot;
}
med=tot/4;
printf("La media degli abitanti è:\t",med);
}
Premetto che sono alle prime armi, la dispensa fornita dal professore è troppo ambigua.