Lógica, perguntado por nicholasdarosa, 1 ano atrás

Faça um algoritmo em linguagem C que emule as características de um player de músicas sendo executado em modo texto, via prompt de comando,
1. Deve-se criar uma playlist das músicas utilizando uma lista encadeada. A lista
encadeada poderá ser simples ou dupla, circular ou não circular. Fica a
critério do aluno decidir.
2. Deve-se armazenar o nome de cada música, do artista/banda e a duração da
faixa. Para o armazenamento utilize uma estrutura heterogênea de dados.
3. Para inserção dos dados, você pode criar uma leitura dos dados através de
um menu na tela ou já deixá-los armazenados em um arquivo texto no seu
computador e só carregar este arquivo ao executar o programa. Ou ambas
soluções. Decida também como você irá implementar a inserção (no início,
no fim ou no meio da lista encadeada);
4. Deve existir um menu na tela. Este menu deve permitir a inserção de novas
músicas (caso optado pela inserção manual de dados), deve ter a opção de
listar todas as músicas da playlist (listagem de uma lista encadeada) na tela
e encerrar o programa;

Soluções para a tarefa

Respondido por thaynnaba
54

No caso podemos afirmar que o referido algorítimo ficaria:

struct Lista

{

char musica[40], cantor[40];

float duracao;

Lista *prox;

};

Lista *inicio, *fim, *aux;

void inserirMusica()

{

int c;

Lista *novo = (struct Lista *)malloc(sizeof(struct Lista));

printf("\nQual eh a musica? ");

fgets(novo->musica, 39, stdin);

printf("De quem eh a musica? ");

fgets(novo->cantor, 39, stdin);

printf("qual a duracao da musica? ");

scanf("%f", &novo->duracao);

while ((c = getchar()) != '\n' && c != EOF) {}   // Limpar buffer do teclado

novo->prox = NULL;

if (inicio == NULL)    //A Fila esta vazia e iremos inserir o primeiro elemento

{

 inicio = fim = novo;

}

else

{

 fim->prox = novo;

 fim = novo;

}

}

void esvaziarLista()

{

char ch;

if (inicio == NULL)

{

 printf("\nA fila esta vazia!\n\n");

}

else

{

 printf("\nTem certeza que deseja esvaziar toda a lista?(s/n): ");

 ch = getchar();

 if (ch == 's' || ch == 'S')

 {

  while (inicio != NULL)

  {

   aux = inicio;

   inicio = inicio->prox;

   free(aux); // Libera o espaco na memoria

  }

  printf("\nA lista foi esvaziada com sucesso!!\n\n");

 }

 else

 {

  printf("\nA lista nao foi esvaziada!!\n\n");

 }

}

}

void mostrarLista()

{

aux = inicio;

if (inicio == NULL)

{

 printf("\nA lista esta vazia!");

}

else

{

 while (aux != NULL)

 {

  printf("musica: %s", aux->musica);

  printf("cantor: %s", aux->cantor);

  printf("duracao: %f\n\n", aux->duracao);

  aux = aux->prox;

 }

}

printf("\n\n");

}

void localizarMusica()

{

aux = inicio;

if (inicio == NULL)

{

 printf("\nA lista estah vazia!");

}

else

{

 char musica[40];

 printf("Digite a musica que procura: ");

 scanf("%s", &aux);

 while (aux != NULL)

 {

  if (musica == aux->musica)

  {

   printf("\nMusica  %s localizada!\n\n", aux->musica);

   printf("musica %s", aux->musica);

   printf("cantor: %s\n\n", aux->cantor);

   return;

  }

  else

  {

   aux = aux->prox;

  }

 }

 if (aux == NULL)

 {

  printf("\nMusica  %s nao localizada!\n", musica);

 }

}

printf("\n\n");

}

int main()

{

setlocale(LC_ALL, "");

system("color 0E");

int opt, c;

do

{

 printf("*==================================*\n");

 printf("| Simulador de Player de Musica    |\n");

 printf("*==================================*\n\n\n\n");

 printf("*===========================*\n");

 printf("| 1. Inserir Música         |\n");

 printf("| 2. Pesquisar Músicas      |\n");

 printf("| 3. listar  Músicas        |\n");

 printf("| 4. Limpar Lista do Player |\n");

 printf("| 5. Sair                   |\n");

 printf("*===========================*\n");

 printf("Digite sua escolha: ");

 scanf("%d", &opt);

 while ((c = getchar()) != '\n' && c != EOF) {}   // Limpar buffer

 switch (opt)

 {

 case 1:

  inserirMusica();

  printf("\nMusica inserida com sucesso!!\n\n");

  system("pause");

  break;

 case 2:

  localizarMusica();

  system("pause");

  break;

 case 3:

  mostrarLista();

  system("pause");

  break;

 case 4:

  esvaziarLista();

  system("pause");

  break;

 case 5:

  printf("\nO programa foi encerrado com sucesso!!\n\n");

  system("pause");

  break;

 default:

  printf("\nEscolha Invalida!!\n\n");

  system("pause");

  break;

 }

 system("cls");

}

while (opt != 5);

return 0;

}

Importante notar que o texto do enunciado da questão diz respeito a um algorítimo que deve ser executado via prompt de comando.

Assim, importante notar como deverá se inserido os comandos.

espero ter ajudado!

Perguntas interessantes