#include <stdio.h>
#include <string.h>
#define MAX_STUDENTI 2
//Questa è la struct "alunno" in cui dichiarerò le variabili che compongono la struct
typedef struct alunno
{
char nome[100];
char cognome[100];
int matricola;
char dataNascita[15];
char luogoNascita[50];
int presenze;
int assenze;
struct indirizzo {
char via[100];
int cap;
int civico;
} indirizzo;
} alunno;
//dichiaro un tipo di dato alunno ma sottoforma di array chiamato classe della dimensione di MAX_STUDENTI
struct alunno classe[MAX_STUDENTI];
//La funzione inserisci_alunno() ci sarà utile per inserire inizialmente i dati degli alunni che poi andremo a manipolare.
//L'inserimento verrà fatto per "MAX_STUDENTI" volte
void inserisci_alunno()
{
int i;
for(i=0;i<=MAX_STUDENTI;i++)
{
system("cls");
fflush(stdin);
printf("\n");
printf(" Alunno numero %d\n\n",i+1);
printf(" Nome : "); gets(classe[i].nome); fflush(stdin);
printf(" Cognome : "); gets(classe[i].cognome); fflush(stdin);
printf(" Matricola (Inserisci solo numeri) : "); scanf("%d",&classe[i].matricola); fflush(stdin);
printf(" Data di Nascita : "); gets(classe[i].dataNascita); fflush(stdin);
printf(" Luogo di Nascita : "); gets(classe[i].luogoNascita); fflush(stdin);
printf(" Via/Corso/Piazza (Inserisci solo l'indirizzo senza civico) : "); gets(classe[i].indirizzo.via); fflush(stdin);
printf(" Numero civico (Inserisci solo numeri) : "); scanf("%d",&classe[i].indirizzo.civico); fflush(stdin);
printf(" CAP (Inserisci solo numeri) : "); scanf("%d",&classe[i].indirizzo.cap); fflush(stdin);
}
}
//La funzione stampa() stamperà a video tutto l'elenco completo degli alunni del corso
void stampa()
{
system("cls");
int i;
printf(" ##########################################################\n");
for(i=0;i<=MAX_STUDENTI;i++)
{
printf(" # Alunno numero %d\n",i+1);
printf(" # Nome : %s\n",classe[i].nome);
printf(" # Cognome : %s\n",classe[i].cognome);
printf(" # Matricola : %d\n",classe[i].matricola);
printf(" # Data di Nascita : %s\n",classe[i].dataNascita);
printf(" # Luogo di Nascita : %s\n",classe[i].luogoNascita);
printf(" # Indirizzo : %s,%d - CAP : %d\n",classe[i].indirizzo.via,classe[i].indirizzo.civico,classe[i].indirizzo.cap);
printf(" # Presenze : %d\n",classe[i].presenze);
printf(" # Assenze : %d\n",classe[i].assenze);
printf(" ##########################################################\n");
}
system("PAUSE");
}
void presenza(int studente) { classe[studente].presenze+=1; }
//La funzione assenze ci permetterà di inserire le assenze degli alunni
void assenza (int studente) { classe[studente].assenze+=1; }
void appello()
{
int count;
int i;
printf(" Se l'alunno è assente=1, se presente=0\n");
for(i=0;i<=MAX_STUDENTI;i++)
{
printf(" %s %s : ",classe[i].cognome,classe[i].nome);
fflush(stdin);
scanf("%d",&count);
switch(count)
{
case 0: presenza(i); break;
case 1: assenza(i); break;
}
}
}
void seleziona_alunno()
{
system("cls");
int i;
char nome[100];
char cognome[100];
fflush(stdin);
printf("Inserisci il nome dell'alunno che cerchi : ");
gets(nome);
fflush(stdin);
printf("Inserisci il cognome dell'alunno che cerchi : ");
gets(cognome);
fflush(stdin);
for(i=0;i<=MAX_STUDENTI;i++)
{
if( !strcmp(classe[i].nome,nome) && !strcmp(classe[i].cognome,cognome) )
{
printf(" # Nome : %s\n",classe[i].nome);
printf(" # Cognome : %s\n",classe[i].cognome);
printf(" # Matricola : %d\n",classe[i].matricola);
printf(" # Data di Nascita : %s\n",classe[i].dataNascita);
printf(" # Luogo di Nascita : %s\n",classe[i].luogoNascita);
printf(" # Indirizzo : %s,%d - CAP : %d\n",classe[i].indirizzo.via,classe[i].indirizzo.civico,classe[i].indirizzo.cap);
printf(" # Presenze : %d\n",classe[i].presenze);
printf(" # Assenze : %d\n",classe[i].assenze);
system("PAUSE");
break;
}
}
}
/*int max (int first, int second) {
if (first > second)
return first;
else
return second;
}*/
void massimo()
{
int max,i;
char *nome;
char *cognome;
for(i=0;i<=MAX_STUDENTI-1;i++)
{
if(classe[i].assenze > classe[i+1].assenze)
{
max=classe[i].assenze;
}
else
{
max=classe[i+1].assenze;
}
}
printf("L'alunno con più assenze e' %s %s con %d assenze !",nome,cognome,max);
}
int max(int a, int b)
{
int mass;
if(a>b){ mass=a; } else { mass=b; }
return mass;
}
int massimo_r(struct alunno* vettore, int n)
{
if (n == 1)
return vettore[0].assenze;
else
return max(vettore->assenze, massimo_r(vettore+1, n-1));
}