Advertisement
Guest User

Untitled

a guest
Jan 17th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.88 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <assert.h>
  4. #include <stdlib.h>
  5. #define MAX 150
  6. #define LEN 1000
  7.  
  8.  
  9. /**
  10. definire una struttura dati per memorizzare un elenco
  11. di libri.  ciascun libro è descritto da Autore, Titolo
  12. e Editore  è un anno di pubblicazione. scrivere una
  13. funzione in c  che acquisisca da tastiera l'elenco di
  14. libri e li memorizzi in una variabile che deve essere
  15. restituita dalla funzione. scrivere una funzione
  16. che prenda in ingresso un elenco di libri e restituisca
  17. l'anno di uscita del libro più vecchi in elenco.la
  18. funzione deve stampare i dati del libro più vecchio
  19. in elenco. scrivere infine una funzione che, preso
  20. in input il nome di un autore, restituisca se l'autore
  21. è presente in elenco
  22. **/
  23.  
  24. /* STRUTTURA DATI */
  25.  
  26. typedef struct
  27. {
  28.     char autore[MAX];
  29.     char titolo[MAX];
  30.     char editore[MAX];
  31.     int anno;
  32.  
  33. } Libro;
  34.  
  35. typedef struct
  36. {
  37.     Libro elementi[LEN];
  38.     int num_libri;
  39.  
  40. } Lista; // sara la nostra lista
  41.  
  42. /* PROTOTIPO DI FUNZIONE */
  43.  
  44. int menu();
  45.  
  46. Lista Inserimento_Libro();
  47.  
  48. void Stampa_Elenco(Lista list);
  49.  
  50. void Libro_Vecchio(Lista list);
  51.  
  52. int Cerca_Autore(Lista list, char autore[]);
  53.  
  54. int main()
  55. {
  56.     int scelta;
  57.  
  58.     Lista L;
  59.  
  60.     char autore[MAX];
  61.  
  62.     int presenza;
  63.  
  64.     while(scelta=menu())
  65.     {
  66.         switch(scelta)
  67.         {
  68.  
  69.         case 1:
  70.             system("CLS");
  71.  
  72.             printf("*** INSERIMENTO LIBRO ***\n\n");
  73.  
  74.             L=Inserimento_Libro();
  75.  
  76.             printf("\n");
  77.  
  78.             Stampa_Elenco(L);
  79.  
  80.             system("PAUSE");
  81.             break;
  82.  
  83.         case 2:
  84.             system("CLS");
  85.  
  86.             printf("*** CERCA LIBRO VECCHIO ***\n\n");
  87.  
  88.             Libro_Vecchio(L); // richiamiamo la funzione Libro_Vecchio
  89.  
  90.             system("PAUSE");
  91.             break;
  92.  
  93.         case 3:
  94.             system("CLS");
  95.  
  96.             printf("*** CERCA AUTORE ***\n\n");
  97.  
  98.             printf("Inserisci autore da cercare: ");
  99.  
  100.             fflush(stdin);
  101.  
  102.             gets(autore);
  103.  
  104.             presenza=Cerca_Autore(L, autore);
  105.  
  106.             if(presenza!=-1)
  107.             {
  108.                 printf("L'autore cercato e' presente\n");
  109.             }
  110.  
  111.             else
  112.                 printf("L'autor cercato non e' presente in elenco\n");
  113.  
  114.             system("PAUSE");
  115.             break;
  116.  
  117.         case 4:
  118.             system("CLS");
  119.  
  120.             printf("*** STAMPA ELENCO LIBRI ***\n\n");
  121.  
  122.             Stampa_Elenco(L); // richiamiamo la Stampa_Elenco
  123.  
  124.             system("PAUSE");
  125.             break;
  126.  
  127.         case 0:
  128.             return 0;
  129.         }
  130.     }
  131.     return 0;
  132. }
  133.  
  134.  
  135. /* DEFINIZIONE DI FUNZIONE */
  136.  
  137. int menu()
  138. {
  139.     int scelta;
  140.  
  141.     printf("***GESTIONE LIBRI***\n");
  142.  
  143.     printf("[1] Inserimento Libro\n");
  144.  
  145.     printf("[2] Cerca Libro Vecchio\n");
  146.  
  147.     printf("[3] Cerca Autore\n");
  148.  
  149.     printf("[4] Stampa Libro\n");
  150.  
  151.     printf("[0] Esci\n\n");
  152.  
  153.     printf("Seclta: ");
  154.     scanf("%d", &scelta);
  155.  
  156.     while(scelta<0 || scelta>4)
  157.     {
  158.  
  159.         printf("Scelta non valida!\n");
  160.  
  161.         printf("Seclta: ");
  162.         scanf("%d", &scelta);
  163.  
  164.         return scelta;
  165.     }
  166.  
  167.     return scelta;
  168.     system("PAUSE");
  169. }
  170.  
  171.  
  172. Lista Inserimento_Libro()
  173. {
  174.     Lista list;
  175.  
  176.     int i;
  177.  
  178.     printf("Quanti libri vuoi inserire? ");
  179.     scanf("%d", &list.num_libri);
  180.  
  181.     fflush(stdin);
  182.  
  183.     for(i=0; i<list.num_libri; i++)
  184.     {
  185.         printf("Inserisci autore: ");
  186.         gets(list.elementi[i].autore);
  187.  
  188.         printf("Inserisci titolo: ");
  189.         gets(list.elementi[i].titolo);
  190.  
  191.         printf("Inserisci editore: ");
  192.         gets(list.elementi[i].editore);
  193.  
  194.         printf("Inserisci anno di pubblicazione: ");
  195.         scanf("%d", &list.elementi[i].anno);
  196.  
  197.         fflush(stdin);
  198.     }
  199.     return list;
  200. }
  201.  
  202. void Stampa_Elenco(Lista list)
  203. {
  204.     int i;
  205.  
  206.     for(i=0; i<list.num_libri; i++)
  207.     {
  208.         printf("\nLibro n.%d\n", i+1);
  209.         printf("Autore: %s\n", list.elementi[i].autore);
  210.         printf("Titolo: %s\n", list.elementi[i].titolo);
  211.         printf("Editore: %s\n", list.elementi[i].editore);
  212.         printf("Anno: %d\n\n", list.elementi[i].anno);
  213.     }
  214. }
  215.  
  216. void Libro_Vecchio(Lista list)
  217. {
  218.     int i;
  219.  
  220.     Libro vecchio=list.elementi[0];
  221.  
  222.     for(i=0; i<list.num_libri; i++)
  223.     {
  224.         if(vecchio.anno > list.elementi[i].anno)
  225.         {
  226.             vecchio=list.elementi[i];
  227.         }
  228.     }
  229.     printf("Il libro piu veccio in elenco e': \n");
  230.     printf("'%s', di %s, pubblicato da %s nel %d\n\n",
  231.            vecchio.titolo, vecchio.autore, vecchio.editore, vecchio.anno); // stampiamo il titolo tra apici singoli
  232. }
  233.  
  234.  
  235. int Cerca_Autore(Lista list, char autore[])
  236. {
  237.     int i;
  238.  
  239.     int presenza=-1;
  240.  
  241.     for(i=0; i<list.num_libri; i++)
  242.     {
  243.         if(strcmp(list.elementi[i].autore, autore)==0)
  244.         {
  245.             presenza=1;
  246.         }
  247.     }
  248.     return presenza;
  249. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement