Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Progettare ed implementare un programma in grado di
- 1. acquisire da tastiera il vettore playlist; ogni elemento di playlist e’ un record (struttura), di nome
- song, composto da tre campi:
- titolo 20 caratteri; autore 20 caratteri; genere 10 caratteri.
- Utilizzando un menu’ di input consentire:
- 2. La ricerca di una canzone per titolo (se trovata visualizzarne anche autore e genere).
- 3. La visualizzazione del numero di canzoni appartenente ad ogni genere.
- 4. Salvare il vettore playlist nel file compilation;
- 5. Uscita.
- ------------------------------------------------------------------------ */
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define dim 20
- typedef struct{
- char titolo[dim];
- char artista[dim];
- char genere[10];
- }playlist;
- typedef char string[20];
- typedef struct{
- string genere;
- int n;
- }num;
- void leggicanzone(playlist canzoni[],int*n);
- void visualizza(playlist canzoni[],int n);
- void ricerca(playlist canzoni[],int n);
- void numerogenere(playlist canzoni[],int n);
- void salvaplaylist(FILE*songlist,playlist canzoni[],int n);
- void uscita();
- /*
- WARNING : 'fp' may be used uninitialized in this function| line 50
- Mmmm...chissà come mai ricevi questo "piccolo" warning?!
- */
- int main(){
- FILE*fp;
- playlist canzone[dim];
- int menu,x;
- leggicanzone(canzone,&x);
- visualizza(canzone,x);
- 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");
- scanf("%d" ,&menu);
- switch(menu){
- case 1:ricerca(canzone,x);
- system("pause");
- return 0;
- break;
- case 2:numerogenere(canzone,x);
- system("pause");
- return 0;
- break;
- case 3:salvaplaylist(fp,canzone,x);
- system("pause");
- return 0;
- break;
- case 4:uscita();
- break;
- }
- /* void uscita(); */
- system("pause");
- return 0;
- }
- void leggicanzone(playlist canzoni[],int*n){
- int i,y;
- puts("\nQuante canzoni vuoi inserire? ");
- scanf("%d", &y);
- getchar();
- *n=y;
- for(i=0;i<y;i++){ puts("\nInserisci il titolo della canzone:");
- gets(canzoni[i].titolo);
- /*canzoni[i].titolo[strlen(canzoni[i].titolo)-1]='\0';*/
- puts("\nInserisci l'artista:");
- gets(canzoni[i].artista);
- /*canzoni[i].artista[strlen(canzoni[i].artista)-1]='\0';*/
- puts("\nInserisci il genere:");
- gets(canzoni[i].genere);
- /*canzoni[i].genere[strlen(canzoni[i].genere)-1]='\0';*/
- }
- puts("\nInserimento terminato");
- }
- void visualizza(playlist canzoni[],int n){
- int i;
- printf("\nLe %d canzoni inserite sono:\n\n", n);
- for(i=0;i<n;i++){ printf("%s \n", canzoni[i].titolo);
- printf("%s \n", canzoni[i].artista);
- printf("%s \n", canzoni[i].genere);
- puts("\n");
- }
- }
- void ricerca(playlist canzoni[],int n)
- {
- int i;
- typedef enum {FALSE, TRUE }trovato;
- char song[dim];
- trovato t;
- getchar();
- printf("Inserisci il titolo che si intende ricercare ( MAX %d caratteri )\n", dim);
- fgets(song, dim, stdin);
- song[strlen(song)-1] = '\0';
- for ( i = 0; i < n && t != TRUE; i++ )
- if ( strcmp(canzoni[i].titolo, song ) == 0 )
- t = TRUE;
- ( t == TRUE ) ? printf("La canzone dal titolo\n%s e' stata trovata nella posizione %d della playlist!\n", song, i)
- : printf("Il titolo da lei inserito non è presente nella playlist!\n");
- }
- void numerogenere(playlist canzoni[],int n){
- int i;
- int j=0;
- int c;
- char genere[10];
- puts("\nInserire il genere che si vuole ricercare: ");
- /*scanf("%s", genere);*/
- getchar();
- gets(genere);
- for(i=0;i<n;i++){ c=strcmp(genere,canzoni[i].genere);
- if(c==0){
- j++;
- printf(" Titolo: %s \n Artista: %s \n\n ",canzoni[i].titolo,canzoni[i].artista);
- }
- }
- printf("\nSono presenti %d canzoni per il genere ricercato.\n",j);
- }
- void salvaplaylist(FILE*songlist,playlist canzoni[],int n){
- int i;
- songlist=fopen("compilation.txt","w");
- for(i=0;i<n;i++){
- fprintf(songlist,"%s %s %s \n",canzoni[i].titolo,canzoni[i].artista,canzoni[i].genere);
- }
- puts("\nLa playlist e' stata salvata correttamente!!");
- }
- void uscita(){
- system("pause");
- }
Add Comment
Please, Sign In to add comment