#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main(int argc, char*argv[])
{
const int MAX=100;
FILE*f;
float nvoti=0.0;
char riga[MAX+1];
char matricola[7];
char codesame[5];
char data[9];
char voto[3];
float sommavoti=0.0;
char primacifra;
if(argc==3)
{
if(strchr(argv[2],’s’)!=NULL)
{
f=fopen(argv[1], “r”);
if(f==NULL)
{
printf(“impossibile aprire il file\n”);
exit(1);
}
while(fgets(riga, MAX, f)!=NULL)
{
sscanf(riga, “%s %s %s %s”, &matricola, &codesame, &data, &voto);
if(strstr(argv[2],matricola) && atoi(voto)>=18)
{
nvoti++;
sommavoti=sommavoti+atoi(voto);
}
}
fclose(f);
printf(“la media e’: %.1f\n”, sommavoti/nvoti );
}
else if(strchr(argv[2],’a')!=NULL)
{
f=fopen(argv[1], “r”);
if(f==NULL)
{
printf(“impossibile aprire il file\n”);
exit(1);
}
while(fgets(riga, MAX, f)!=NULL)
{
sscanf(riga, “%s %s %s %s”, &matricola, &codesame, &data, &voto);
primacifra=codesame[0];
if(strchr(argv[2],primacifra) && atoi(voto)>=18)
{
nvoti++;
sommavoti=sommavoti+atoi(voto);
}
}
fclose(f);
printf(“la media e’: %.1f\n”, sommavoti/nvoti );
}
else if(strchr(argv[2],’e')!=NULL)
{
f=fopen(argv[1], “r”);
if(f==NULL)
{
printf(“impossibile aprire il file\n”);
exit(1);
}
while(fgets(riga, MAX, f)!=NULL)
{
sscanf(riga, “%s %s %s %s”, &matricola, &codesame, &data, &voto);
if(strstr(argv[2],codesame) && atoi(voto)>=18)
{
nvoti++;
sommavoti=sommavoti+atoi(voto);
}
}
fclose(f);
printf(“la media e’: %.1f\n”, sommavoti/nvoti );
}
else
{
printf(“opzione inserita non valida\n”);
}
}
else if(argc==4)
{
f=fopen(argv[1], “r”);
if(f==NULL)
{
printf(“impossibile aprire il file\n”);
exit(1);
}
while(fgets(riga, MAX, f)!=NULL)
{
sscanf(riga, “%s %s %s %s”, &matricola, &codesame, &data, &voto);
primacifra=codesame[0];
if(strstr(argv[2],matricola) && atoi(voto)>=18 && strchr(argv[3],primacifra))
{
nvoti++;
sommavoti=sommavoti+atoi(voto);
}
}
fclose(f);
printf(“la media e’: %.1f\n”, sommavoti/nvoti );
}
else
{
printf(“errore numero di parametri errato\n”);
}
exit(0);
}
