Concetti Chiave

  • La società STAT elabora statistiche sui comuni italiani, creando una tabella binaria con i dettagli di ciascun comune.
  • La tabella dei comuni include nome, sigla della provincia e numero di abitanti, ordinata per sigla e nome.
  • STAT genera anche una tabella delle province, contenente sigla, numero di comuni e popolazione totale di ciascuna provincia.
  • Il programma in C legge i dati dai comuni e li elabora per creare la tabella delle province, gestendo file binari.
  • La struttura dei dati è rappresentata da due struct: 'comune' e 'provincia', per organizzare le informazioni in modo efficiente.

La società STAT effettua elaborazioni statistiche.

Organizzazione della tabella comuni

Recentemente il centro di calcolo della STAT ha elaborato una tabella statistica dei comuni italiani così organizzata:

* la tabella (file binario) contiene l’elenco di tutti i comuni italiani;

* per ogni comune, la tabella contiene:

1. il nome del comune;

2. la sigla della provincia di appartenenza;

3. il numero di abitanti del comune;

* la tabella è ordinata per ordine crescente di sigla delle province e,

nell’ambito della stessa provincia, in base al nome del comune.

Struttura della tabella province

Dalla tabella statistica dei comuni la STAT vuole ottenere una tabella (file

binario), detta tabella statistica delle province, così organizzata:

* la tabella deve contenere l’elenco ordinato di tutte le province italiane;

* per ogni provincia, la tabella deve contenere:

1. la sigla della provincia;

2. il numero dei comuni che ne fanno parte;

3. il numero complessivo di abitanti della provincia.

Implementazione del programma in C

Dopo aver dichiarato le strutture dati, scrivi un pgm C che realizzi quanto sopra descritto, cioè che a partire dalla tabella COMUNI crei la tabella PROVINCE.

[b]struct comune[/b]{
[/p]
[p]
char nome[31];
[/p]
[p]
char prov[3];
[/p]
[p]
unsigned int numAbitanti;
[/p]
[p]
};
[/p]
[p]
[b]struct provincia[/b]{
[/p]
[p]
char sigla[3];
[/p]
[p]
unsigned short int numComuni;
[/p]
[p]
unsigned int numAbitanti;
[/p]
[p]
};
[/p]
[p]
int main(void)
[/p]
[p]
{
[/p]
[p]
FILE * fpComuni;
[/p]
[p]
FILE * fpProvincie;
[/p]
[p]
comune comun;
[/p]
[p]
provincia prov;
[/p]
[p]
unsigned short int totComuni;
[/p]
[p]
unsigned int totAbitanti;
[/p]
[p]
char ultProv[3];
[/p]
[p]
fpComuni=[b]fopen[/b]("comuni.dat","rb");
[/p]
[p]
fpProvincie=fopen("provincie.dat","wb");
[/p]
[p]
[b]fread[/b](&comun,sizeof(comune),1,fpComuni);
[/p]
[p]
totComuni = 0;
[/p]
[p]
totAbitanti = 0;
[/p]
[p]
strcpy(ultProv,comun.prov);
[/p]
[p]
while(!feof(fpComuni))
[/p]
[p]
{
[/p]
[p]
if(!strcmp(comun.prov,ultProv))
[/p]
[p]
{
[/p]
[p]
totComuni++;
[/p]
[p]
totAbitanti+=comun.numAbitanti;
[/p]
[p]
fread(&comun,sizeof(comune),1,fpComuni);
[/p]
[p]
}
[/p]
[p]
else
[/p]
[p]
{
[/p]
[p]
strcpy(prov.sigla,ultProv);
[/p]
[p]
prov.numComuni = totComuni;
[/p]
[p]
prov.numAbitanti = totAbitanti;
[/p]
[p]
[b]fwrite[/b](&prov,sizeof(provincia),1,fpProvincie);
[/p]
[p]
strcpy(ultProv,comun.prov);
[/p]
[p]
totComuni = 0;
[/p]
[p]
totAbitanti = 0;
[/p]
[p]
}
[/p]
[p]
strcpy(prov.sigla,ultProv);
[/p]
[p]
prov.numComuni = totComuni;
[/p]
[p]
prov.numAbitanti = totAbitanti;
[/p]
[p]
fwrite(&prov,sizeof(provincia),1,fpProvincie);
[/p]
[p]
fclose(fpComuni);
[/p]
[p]
fclose(fpProvincie);
[/p]
[p]
return 0;
[/p]
[p]
}

Domande da interrogazione

  1. Qual è la struttura della tabella dei comuni elaborata dalla società STAT?
  2. La tabella dei comuni contiene l'elenco di tutti i comuni italiani, con il nome del comune, la sigla della provincia di appartenenza e il numero di abitanti, ed è ordinata per sigla delle province e nome del comune.

  3. Come è organizzata la tabella statistica delle province?
  4. La tabella statistica delle province include l'elenco ordinato di tutte le province italiane, con la sigla della provincia, il numero di comuni che ne fanno parte e il numero complessivo di abitanti della provincia.

  5. Qual è il compito del programma in C descritto nel testo?
  6. Il programma in C ha il compito di creare la tabella delle province a partire dalla tabella dei comuni, elaborando i dati per ottenere il numero di comuni e il totale degli abitanti per ciascuna provincia.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community