Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <assert.h>
- #include <stdlib.h>
- #define MAX 150
- #define LEN 1000
- /**
- definire una struttura dati per memorizzare un elenco
- di libri. ciascun libro è descritto da Autore, Titolo
- e Editore è un anno di pubblicazione. scrivere una
- funzione in c che acquisisca da tastiera l'elenco di
- libri e li memorizzi in una variabile che deve essere
- restituita dalla funzione. scrivere una funzione
- che prenda in ingresso un elenco di libri e restituisca
- l'anno di uscita del libro più vecchi in elenco.la
- funzione deve stampare i dati del libro più vecchio
- in elenco. scrivere infine una funzione che, preso
- in input il nome di un autore, restituisca se l'autore
- è presente in elenco
- **/
- /* STRUTTURA DATI */
- typedef struct
- {
- char autore[MAX];
- char titolo[MAX];
- char editore[MAX];
- int anno;
- } Libro;
- typedef struct
- {
- Libro elementi[LEN];
- int num_libri;
- } Lista; // sara la nostra lista
- /* PROTOTIPO DI FUNZIONE */
- int menu();
- Lista Inserimento_Libro();
- void Stampa_Elenco(Lista list);
- void Libro_Vecchio(Lista list);
- int Cerca_Autore(Lista list, char autore[]);
- int main()
- {
- int scelta;
- Lista L;
- char autore[MAX];
- int presenza;
- while(scelta=menu())
- {
- switch(scelta)
- {
- case 1:
- system("CLS");
- printf("*** INSERIMENTO LIBRO ***\n\n");
- L=Inserimento_Libro();
- printf("\n");
- Stampa_Elenco(L);
- system("PAUSE");
- break;
- case 2:
- system("CLS");
- printf("*** CERCA LIBRO VECCHIO ***\n\n");
- Libro_Vecchio(L); // richiamiamo la funzione Libro_Vecchio
- system("PAUSE");
- break;
- case 3:
- system("CLS");
- printf("*** CERCA AUTORE ***\n\n");
- printf("Inserisci autore da cercare: ");
- fflush(stdin);
- gets(autore);
- presenza=Cerca_Autore(L, autore);
- if(presenza!=-1)
- {
- printf("L'autore cercato e' presente\n");
- }
- else
- printf("L'autor cercato non e' presente in elenco\n");
- system("PAUSE");
- break;
- case 4:
- system("CLS");
- printf("*** STAMPA ELENCO LIBRI ***\n\n");
- Stampa_Elenco(L); // richiamiamo la Stampa_Elenco
- system("PAUSE");
- break;
- case 0:
- return 0;
- }
- }
- return 0;
- }
- /* DEFINIZIONE DI FUNZIONE */
- int menu()
- {
- int scelta;
- printf("***GESTIONE LIBRI***\n");
- printf("[1] Inserimento Libro\n");
- printf("[2] Cerca Libro Vecchio\n");
- printf("[3] Cerca Autore\n");
- printf("[4] Stampa Libro\n");
- printf("[0] Esci\n\n");
- printf("Seclta: ");
- scanf("%d", &scelta);
- while(scelta<0 || scelta>4)
- {
- printf("Scelta non valida!\n");
- printf("Seclta: ");
- scanf("%d", &scelta);
- return scelta;
- }
- return scelta;
- system("PAUSE");
- }
- Lista Inserimento_Libro()
- {
- Lista list;
- int i;
- printf("Quanti libri vuoi inserire? ");
- scanf("%d", &list.num_libri);
- fflush(stdin);
- for(i=0; i<list.num_libri; i++)
- {
- printf("Inserisci autore: ");
- gets(list.elementi[i].autore);
- printf("Inserisci titolo: ");
- gets(list.elementi[i].titolo);
- printf("Inserisci editore: ");
- gets(list.elementi[i].editore);
- printf("Inserisci anno di pubblicazione: ");
- scanf("%d", &list.elementi[i].anno);
- fflush(stdin);
- }
- return list;
- }
- void Stampa_Elenco(Lista list)
- {
- int i;
- for(i=0; i<list.num_libri; i++)
- {
- printf("\nLibro n.%d\n", i+1);
- printf("Autore: %s\n", list.elementi[i].autore);
- printf("Titolo: %s\n", list.elementi[i].titolo);
- printf("Editore: %s\n", list.elementi[i].editore);
- printf("Anno: %d\n\n", list.elementi[i].anno);
- }
- }
- void Libro_Vecchio(Lista list)
- {
- int i;
- Libro vecchio=list.elementi[0];
- for(i=0; i<list.num_libri; i++)
- {
- if(vecchio.anno > list.elementi[i].anno)
- {
- vecchio=list.elementi[i];
- }
- }
- printf("Il libro piu veccio in elenco e': \n");
- printf("'%s', di %s, pubblicato da %s nel %d\n\n",
- vecchio.titolo, vecchio.autore, vecchio.editore, vecchio.anno); // stampiamo il titolo tra apici singoli
- }
- int Cerca_Autore(Lista list, char autore[])
- {
- int i;
- int presenza=-1;
- for(i=0; i<list.num_libri; i++)
- {
- if(strcmp(list.elementi[i].autore, autore)==0)
- {
- presenza=1;
- }
- }
- return presenza;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement