ciao a tutti,
sono nuovo del forum...
avrei bisogno di aiuto su questo programma in C:

codice:
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 5
typedef struct {
	int Matricola;
	char Nome [20];
	int Anno;}Studente;
typedef struct {
	char Provincia[20];
	int CodInsegnmento;
	int voto;}Esame;
main()
{
	int I,somma=0;float media;
	FILE *fp1;
	FILE *fp2;
	Studente dati1;
	Esame dati2;
	fp1=fopen("studenti.dat", "wb");
	if(fp1==NULL){fprintf(stderr, "errore di apertura");exit(1);}
	printf("Acquisizione struttura Studente\n\n");
	for(I=0;I<N;I++)
	{
		printf("Matricola:  ");scanf("%d",&dati1.Matricola);
		printf("Nome studente:  ");scanf("%s", dati1.Nome);
		printf("Anno corso:  ");scanf("%d", &dati1.Anno);
		fwrite(&dati1, sizeof(dati1), 1, fp1);}
	fclose(fp1);
	fp2=fopen("Esami.dat", "wb");
	if(fp2==NULL){fprintf(stderr, "Errore di apertura");exit(1);}
	printf("Acquisizione struttura Esame\n\n");
	for(I=0;I<N;I++)
	{
		printf("Provincia:  ");scanf("%s",dati2.Provincia);
		printf("Codice insegnamento:  ");scanf("%d", &dati2.CodInsegnmento);
		printf("Voto:  ");scanf("%d", &dati2.voto);
				fwrite(&dati2, sizeof(dati2), 1, fp2);}
	fclose(fp2);
	fp2=fopen("esami.dat", "rb");
	if(fp2==NULL) {fprintf(stderr, "Errore di apertura");exit(1);}
	while(fread(&dati2, sizeof(dati2), 1, fp2)!=0)
	{printf("Nome %s\n",dati1.Nome);}
	fclose(fp2);
}
leggendo i dati dai file si vuole mostrare:
-l'elenco degli studenti la cui media dei voti è superiore a 27
-l'elenco delle province da cui provengono almeno 3 studenti la cui media è superiore a 27

qualcuno sa dirmi come impostarlo per ottenere i risultati elencati?

grazie

saluti