Advertisement
renix1

Exercício 1 de música

Mar 30th, 2019
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.38 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <locale.h>
  4.  
  5.  
  6. typedef struct musicaStruct { // Registro com nome, artista e duração da música e claro, um ponteiro para a próxima música
  7.     char *nome;
  8.     char *artista;
  9.     float duracao;
  10.     struct musicaStruct *prox;
  11. } musica;
  12.  
  13. void insereFinal(musica **msc, char *nome, char *artista, float duracao) { // função para inserção das músicas no final da playlist
  14.     // elemento do tipo música criado
  15.     musica *novaMusica;
  16.     novaMusica = malloc(sizeof(musica));
  17.     novaMusica->nome = nome;
  18.     novaMusica->artista = artista;
  19.     novaMusica->duracao = duracao;
  20.     if (*msc == NULL) {
  21.         novaMusica->prox = NULL;
  22.         *msc = novaMusica;
  23.     } else {
  24.         musica *msc_temp = *msc;
  25.         while (msc_temp->prox != NULL)
  26.         {
  27.             msc_temp = msc_temp->prox;
  28.         }
  29.         msc_temp->prox = novaMusica;
  30.         novaMusica->prox = NULL;
  31.     }
  32. }
  33.  
  34. void listarMusicas (musica **msc) {
  35.     // Fazendo a varredura na lista para imprimir os dados
  36.     printf("\n------------------ PLAYLIST ----------------------\n");
  37.     musica *msc_temp;
  38.     msc_temp = *msc;
  39.     while (msc_temp != NULL)
  40.     {
  41.         printf("%s de %s com tempo de %.2f minutos\n", msc_temp->nome, msc_temp->artista, msc_temp->duracao);
  42.         msc_temp = msc_temp->prox;
  43.     }
  44.     printf("------------------ PLAYLIST ----------------------\n");
  45. }
  46.  
  47. void escolha (musica **msc) {
  48.     // Menu de escolha para o usuario listar, inserir ou sair do programa
  49.     printf("[1] - Listagem das músicas\n[2] - Inserir nova música\n[3] - Sair\nDigite a sua escolha: ");
  50.     int opcao;
  51.     scanf("%d", &opcao);
  52.     while (opcao != 3) {
  53.         char *nome = malloc(sizeof(char *) * 64), *artista = malloc(sizeof(char *) * 64);
  54.         float duracao = 0.00;
  55.         switch (opcao) {
  56.             case 1:
  57.                 // Chamada para função de listagem da playlist
  58.                 listarMusicas(msc);
  59.                 break;
  60.             case 2:
  61.                 // Inserção da música na playlist
  62.                 printf("\nNome da música: ");
  63.                 scanf("%s", nome);
  64.                 printf("Nome do(a) artista: ");
  65.                 scanf("\n%s", artista);
  66.                 printf("Duração da música: ");
  67.                 scanf("%f", &duracao);
  68.                 insereFinal(msc, nome, artista, duracao);
  69.                 printf("A sua música %s do %s foi adicionada a playlist\n", nome, artista);
  70.                 listarMusicas(msc);
  71.                 break;
  72.             case 3:
  73.                 exit(0);
  74.                 break;
  75.             default:
  76.                 printf("Não conseguimos identificar essa opção\n");
  77.                 break;
  78.         }
  79.         printf("\n[1] - Listagem das músicas\n[2] - Inserir nova música\n[3] - Sair\nDigite a sua escolha: ");
  80.         scanf("%d", &opcao);
  81.     }
  82. }
  83.  
  84. int main (void) {
  85.     // Definindo o locale pra problemas de acentuação e pra números flutuantes em PT_BR
  86.     setlocale(LC_ALL, "");
  87.     musica *topo = NULL;
  88.     // Inserindo os primeiros dados na playlist
  89.     char *nome;
  90.     nome = "Yoppa";
  91.     char *artista;
  92.     artista = "Lil Mosey";
  93.     float duracao1 = 4.24;
  94.     float duracao2 = 3.02;
  95.     insereFinal(&topo, nome, artista, duracao1);
  96.     insereFinal(&topo, artista, nome, duracao2);
  97.     // Menu para escolha dos usuarios
  98.     escolha(&topo);
  99.     return 0;
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement