ragazzi ho un problema
ho fatto questo esercizo e me lo compila
però quando lo invio dopo l'inserimento scelgo l'opzione nel case
e mi si apre una finestra di errore di windows
help me please!
codice:
#include <stdio.h>
#include <stdlib.h>
 
struct indirizzo {
 char strada[20];
 char CAP[5];
 char civico[3]; };

struct data {
	short giorno;
	char mese[10];
	char anno[4];};

typedef struct indirizzo ind;
typedef struct data Data;

struct studente {
	char nome[10];
	char cognome[15];
	char matricola[10];
	char luognasc[25];
	ind indirizzo;
	Data datanascita;
	short presenze[20];
};
 
typedef struct studente stud;
stud student[30];
stud max_I(stud a, stud  b);
int max_(int a,int b);
stud massimo_a_ricDI(stud a[],int n);
void stampa(stud *);
void inserimento(stud *);
void ricerca(stud *);


void stampa(stud *student)
{short i;
//stampa dei dati e presenze totali
printf("dati degli studenti");
for (i=0;i<3;i++)
	{fflush(stdin);
 	 printf("%s %s %s %s \n %s %s %s \n %d %s %s\n",student[i].cognome,student[i].nome,student[i].matricola,
		student[i].luognasc,student[i].indirizzo.strada,student[i].indirizzo.civico,student[i].indirizzo.CAP,
		student[i].datanascita.giorno,student[i].datanascita.mese,student[i].datanascita.anno);
	 printf(" presenze totali su 20 giorni %d \n",3-student[i].presenze[0]);
	}
}

void ricerca(stud *student)
{short j;char nome[10],cognome[15];
//ricercadi uno studente dato nome e cognome
printf("inserisci cognome e nome dello studente da ricercare");
scanf("%s" "%s",&cognome,&nome);	
	while ((student[j].cognome!=cognome || student[j].nome!=nome)&&(j<3))//controollare la condizione
	{j=j+1;}
 //if cognome e nome trovati
	printf("%s %s %s %s \n %s %s %s \n %d %s %s\n",student[j].cognome,student[j].nome,student[j].matricola,
	 student[j].luognasc,student[j].indirizzo.strada,student[j].indirizzo.civico,student[j].indirizzo.CAP,
		student[j].datanascita.giorno,student[j].datanascita.mese,student[j].datanascita.anno);
	 printf(" assenze 20 giorni %d \n",student[j].presenze[0]);
}



stud max_I(stud a, stud  b) {

   if (a.presenze[0] > b.presenze[0])
      return a;   
   else
      return b;
}


stud massimo_a_ricDI(stud a[],int n)
{
 int mediano; 
  /* soluzione del caso base  */
 if(n == 1)
    return a[0];
  else
    {
    /* autoattivazioni */
    mediano = (n-1)/2;
    return max_I(massimo_a_ricDI(a,mediano+1),massimo_a_ricDI(a+mediano+1,n-mediano-1));
    }
}



void inserimento(stud *student)
{short i,j,h;
for (i=0;i<2;i++)
{fflush(stdin);
printf("inserisci nome studente n %d\n ",i+1);
scanf("%s",&student[i].nome);fflush(stdin);
printf("inserisci cognome studente  %s\n ",student[i].nome);
scanf ("%s",&student[i].cognome);fflush(stdin);
/*printf("inserisci matricola studente  %s\n ",student[i].cognome);
scanf("%s",&student[i].matricola);fflush(stdin);
printf("inserisci luogo di nascita studente  %s\n ",student[i].cognome);
scanf("%s",&student[i].luognasc);fflush(stdin);
printf("inserisci indirizzo(strada,civico,CAP) lasciando uno spazio, studente %s\n",student[i].cognome);
scanf("%s" "%s" "%s",&student[i].indirizzo.strada,&student[i].indirizzo.civico,&student[i].indirizzo.CAP);
printf("inserisci data nascita (gg mese(parola) anno) lasciando uno spazio, studente %s\n",student [i].cognome);
scanf("%d" "%s" "%s",&student[i].datanascita.giorno,&student[i].datanascita.mese,&student[i].datanascita.anno);
//finora carichiamo i dati degli studenti*/
}
for (h=1;h<3;h++)
	{student[h].presenze[0]=0;
     for (j=0;j<2;j++)
		{fflush(stdin);
			printf("lo studente %s %s e \npresente nel %d giorno\n",student[j].cognome,student[j].nome,h);
			printf("\nimmettere 0 per presente e 1 per assente\n");
			do{
			fflush(stdin);printf("ripeti ");
			scanf("%d",&student[j].presenze[h]);
			}while ((student[j].presenze[h]!=0) && (student[j].presenze[h]!=1));
			student[j].presenze[0]=student[j].presenze[0]+student[j].presenze[h];//conta il numero di assenze
		}
	}

}

void main()
{short i=0,j=3;stud h;
inserimento(student);
printf("premi 1 per Stampare i dati e le presenze totali di tutti gli studenti\n");
printf("premi 2 per Dato un nome e un cognome stampare i dati e le assenze totali dello studente\n");
printf("premi 3 per Stampare il nome e il cognome dello studente che ha fatto più assenze\n");
scanf("%d",i);
switch(i){
  case 1:
    stampa(student);break;
  case 2:
    ricerca(student);break;
  case 3:
	  h=massimo_a_ricDI(student,j);
  default:
    printf("errore");break;
}
}