Guest User

Untitled

a guest
Jun 23rd, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.87 KB | None | 0 0
  1. /* Progettare ed implementare un programma in grado di
  2. 1. acquisire da tastiera il vettore playlist; ogni elemento di playlist e’ un record (struttura), di nome
  3. song, composto da tre campi:
  4. titolo 20 caratteri; autore 20 caratteri; genere 10 caratteri.
  5. Utilizzando un menu’ di input consentire:
  6. 2. La ricerca di una canzone per titolo (se trovata visualizzarne anche autore e genere).
  7. 3. La visualizzazione del numero di canzoni appartenente ad ogni genere.
  8. 4. Salvare il vettore playlist nel file compilation;
  9. 5. Uscita.
  10. ------------------------------------------------------------------------ */
  11.  
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15. #define dim 20
  16. typedef struct{
  17.         char titolo[dim];
  18.         char artista[dim];
  19.         char genere[10];
  20.         }playlist;
  21. typedef char string[20];
  22. typedef struct{
  23.         string genere;
  24.         int n;
  25.         }num;
  26.  
  27. void leggicanzone(playlist canzoni[],int*n);
  28. void visualizza(playlist canzoni[],int n);
  29. void ricerca(playlist canzoni[],int n);
  30. void numerogenere(playlist canzoni[],int n);
  31. void salvaplaylist(FILE*songlist,playlist canzoni[],int n);
  32. void uscita();
  33.  
  34. /*
  35.     WARNING : 'fp' may be used uninitialized in this function|  line 50
  36.     Mmmm...chissà come mai ricevi questo "piccolo" warning?!
  37.  
  38. */
  39.  
  40. int main(){
  41.     FILE*fp;
  42.     playlist canzone[dim];
  43.     int menu,x;
  44.     leggicanzone(canzone,&x);
  45.     visualizza(canzone,x);
  46.     printf("\nDigita:\n1 Cerca canzone per titolo;\n2 Visualizza le canzoni appartenenti ad un genere;\n3 Salva playlist in file Compilation;\n4 Uscita;\n\n");
  47.     scanf("%d" ,&menu);
  48.     switch(menu){
  49.                  case 1:ricerca(canzone,x);
  50.                         system("pause");
  51.                         return 0;
  52.                       break;
  53.                  case 2:numerogenere(canzone,x);
  54.                         system("pause");
  55.                         return 0;
  56.                       break;
  57.                  case 3:salvaplaylist(fp,canzone,x);
  58.                         system("pause");
  59.                         return 0;
  60.                       break;
  61.                  case 4:uscita();
  62.                       break;
  63. }
  64.  
  65.  
  66.     /* void uscita(); */
  67.     system("pause");
  68.     return 0;
  69. }
  70.  
  71.  
  72.  
  73.  
  74. void leggicanzone(playlist canzoni[],int*n){
  75.      int i,y;
  76.      puts("\nQuante canzoni vuoi inserire? ");
  77.      scanf("%d", &y);
  78.      getchar();
  79.      *n=y;
  80.      for(i=0;i<y;i++){  puts("\nInserisci il titolo della canzone:");
  81.                         gets(canzoni[i].titolo);
  82.                         /*canzoni[i].titolo[strlen(canzoni[i].titolo)-1]='\0';*/
  83.                         puts("\nInserisci l'artista:");
  84.                         gets(canzoni[i].artista);
  85.                         /*canzoni[i].artista[strlen(canzoni[i].artista)-1]='\0';*/
  86.                         puts("\nInserisci il genere:");
  87.                         gets(canzoni[i].genere);
  88.                         /*canzoni[i].genere[strlen(canzoni[i].genere)-1]='\0';*/
  89.                         }
  90.      puts("\nInserimento terminato");
  91.      }
  92.  
  93. void visualizza(playlist canzoni[],int n){
  94.      int i;
  95.      printf("\nLe %d canzoni inserite sono:\n\n", n);
  96.      for(i=0;i<n;i++){     printf("%s \n", canzoni[i].titolo);
  97.                           printf("%s \n", canzoni[i].artista);
  98.                           printf("%s \n", canzoni[i].genere);
  99.                           puts("\n");
  100.                           }
  101.      }
  102.  
  103. void ricerca(playlist canzoni[],int n)
  104. {
  105.      int i;
  106.      typedef enum {FALSE, TRUE }trovato;
  107.      char song[dim];
  108.  
  109.      trovato t;
  110.      getchar();
  111.      printf("Inserisci il titolo che si intende ricercare ( MAX %d caratteri )\n", dim);
  112.      fgets(song, dim, stdin);
  113.      song[strlen(song)-1] = '\0';
  114.  
  115.      for ( i = 0; i < n && t != TRUE; i++ )
  116.         if ( strcmp(canzoni[i].titolo, song ) == 0 )
  117.             t = TRUE;
  118.  
  119.     ( t == TRUE ) ? printf("La canzone dal titolo\n%s e' stata trovata nella posizione %d della playlist!\n", song, i)
  120.     : printf("Il titolo da lei inserito non è presente nella playlist!\n");
  121.  
  122.  
  123. }
  124.  
  125. void numerogenere(playlist canzoni[],int n){
  126.      int i;
  127.      int j=0;
  128.      int c;
  129.      char genere[10];
  130.      puts("\nInserire il genere che si vuole ricercare: ");
  131.      /*scanf("%s", genere);*/
  132.      getchar();
  133.      gets(genere);
  134.      for(i=0;i<n;i++){   c=strcmp(genere,canzoni[i].genere);
  135.                          if(c==0){
  136.                                  j++;
  137.                                  printf(" Titolo: %s \n Artista: %s \n\n ",canzoni[i].titolo,canzoni[i].artista);
  138.  
  139.                                  }
  140.                          }
  141.      printf("\nSono presenti %d canzoni per il genere ricercato.\n",j);
  142. }
  143.  
  144. void salvaplaylist(FILE*songlist,playlist canzoni[],int n){
  145.      int i;
  146.      songlist=fopen("compilation.txt","w");
  147.      for(i=0;i<n;i++){
  148.                       fprintf(songlist,"%s %s %s \n",canzoni[i].titolo,canzoni[i].artista,canzoni[i].genere);
  149.                       }
  150.      puts("\nLa playlist e' stata salvata correttamente!!");
  151.      }
  152.  
  153. void uscita(){
  154.      system("pause");
  155.      }
Add Comment
Please, Sign In to add comment