#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
#define DIM 100000
struct libro
{
char autore[N];
int anno;
int copie;
};
typedef struct libro libro;
void inserisci(libro book[], int pezzi);
void visualizza(libro book[], int pezzi);
void media_copie(libro book[], int pezzi);
void svuota(libro book[]);
int main()
{
libro book[N];
int pezzi;
int scelta;
do
{
printf("Cosa vuoi fare?\n\n0. Inserire libri\n1. Visualizzare libri\n2. Calcolare media copie\n3. Chiudere\n\n");
scanf("%d",&scelta);
switch(scelta)
{
case 0:
printf("Quanti libri vuoi inserire?\n"); scanf("%d", &pezzi); inserisci(book,pezzi); break;
case 1:
visualizza(book, pezzi); break;
case 2:
media_copie(book, pezzi); break;
case 3:
exit(1); break;
default:
printf("Inserire opzione valida\n");
scelta=0; break;
}
}
while(scelta<=3);
return 0;
}
void inserisci(libro book[], int pezzi)
{
FILE *fp;
fp=fopen("libro.txt", "a+");
int invalid=0;
int i;
for(i=0;i<pezzi;i++)
{
while(getchar()!='\n');
printf("Inserisci autore:\n");
fgets(book.autore, N, stdin);
printf("Inserisci anno pubblicazione:\n");
scanf("%d", &book.anno);
printf("Inserisci numero copie:\n");
scanf("%d", &book.copie);
printf("\n");
if(book.anno>1990)
{
fprintf(fp, "Autore: %s\n", book.autore);
fprintf(fp, "Anno pubblicazione: %d\n", book.anno);
fprintf(fp, "Numero copie: %d\n\n", book.copie);
}
else
{
printf("Anno non valido");
invalid=1;
break;
}
if(invalid==1)
break;
}
fclose(fp);
}
void visualizza(libro book[], int pezzi)
{
FILE *fp;
fp=fopen("libro.txt", "r");
char buffer[DIM];
int c=0;
while(!feof(fp))
{
fread(buffer, sizeof(libro), N, fp);
printf("%s", buffer);
c++;
}
fclose(fp);
}
void media_copie(libro book[], int pezzi)
{
FILE *fp;
fp=fopen("libro.txt", "r+");
float media_copie=0;
char buffer[DIM];
int c=0;
while(!feof(fp))
{
fgets(buffer, sizeof(libro), fp);
if((c)%3==0)
media_copie= media_copie + atof(buffer+9);
c++;
}
printf("\n Sono presenti %d libri\n", c/3);
printf("Media copie: %f\n", (float)(media_copie/3));
fclose(fp);
}