Jump to content

[Error] unknown type name 'Lista' - Programa Listagem de Músicas


fortunecat

Recommended Posts

fortunecat

Boa tarde, gostaria que me pudessem ajudar em relação a este que me é dado quando 'corro' o programa.

Vou também pôr aqui o enunciado caso queiram estar dentro do que me é pedido para implementar no programa, ou se estiver a fazer algo de mal ou faltar algo, por favor sintam-se na necessidade de expor a vossa opinião.

Enunciado(ainda não fiz a alínea D):

1)Pretende-se analisar um conjunto de músicas. Cada música caracteriza-se pelo título, intérprete, ano, single (1:sim ou 0:não) e número de downloads nas plataformas aderentes.

Obs:1. n, em todos os cabeçalhos das funções, representa o número de músicas no vetor lista;

2. utilize ponteiros em todas as alíneas para aceder ao valor dos atributos dos elementos do vetor.

a) Defina o tipo de dados Musica e crie um vetor de nome lista, com um número de músicas definido pelo utilizador (valor disponível na variável nMusicas).

b) Implemente uma função que escreva no ecrã, as características das músicas com mais do que um determinado número de downloads (parâmetro numD). void musicasDownload(Musica *lista, int n, int numD)

c) Desenvolva uma função que receba a listagem de músicas e devolva quantas têm um dado intérprete.

d) Desenvolva uma função que guarde num ficheiro binário, as músicas singles, não singles ou ambas (parâmetro tpMeio=’s’, ‘n’ ou ‘a´, respetivamente), posteriores a um determinado ano. A função deve ainda devolver o número médio de downloads dessas músicas.

float gravaFichMusicas (Musica *lista, int n, int ano, char *nFich, char tpMeio) Obs. Sintaxes: FILE* fopen(const char* fileName, const char* mode); size_t fwrite (const void* ptr, size_t size, size_t nElements, FILE* file);


	#include <stdio.h>
	#include <stdlib.h>
	#include <stdbool.h>
	#include <locale.h>
	
	struct Lista{
		char titulo[40], inter[40];
		int ano, dw;
		bool single;
		float duracao;
		Lista *prox;
	};
	
	Lista *inicio, *fim, *aux;
		
	void inserirMusica(){
		
		int c;
		Lista *novo = (struct Lista *)malloc(sizeof(struct Lista));
		
		printf("\nNome da Musica: \t ");
		fgets(novo->titulo, 39, stdin);
		
		printf("Intérprete: \t ");
		fgets(novo->inter, 39, stdin);
		
		printf("Single: \t ");
		scanf("%d", &novo->single);
		
		printf("Duração da música: \t ");
		scanf("%f", &novo->duracao);
		
		printf("Ano de Lançamento: \t ");
		scanf("%i", &novo->ano);
		
		printf("Quantidade de Downloads: \t ");
		scanf("%i", &novo->dw);
		
		while ((c = getchar()) != '\n' && c != EOF) {}   // Limpar buffer do teclado
		novo->prox = NULL;
		
		if (inicio == NULL){
			inicio = fim = novo;
		}else{
			fim->prox = novo;
			fim = novo;
		}
	}
	
	
	void esvaziarLista(){
		char op;
		if (inicio == NULL){
			printf("\nA fila esta vazia!\n\n");
			}else{
				printf("\nTem certeza que deseja esvaziar toda a lista?(s/n): ");
				op = getchar();
				if (op == 's' || op == 'S'){
					while (inicio != NULL){
						aux = inicio;
						inicio = inicio->prox;
						free(aux); // Liberta memória
					}
					printf("\nA lista esvaziada com sucesso!!\n");
					}else{
						printf("\nA lista nao foi esvaziada!!\n");
				}
			}
	}
	
	void mostrarLista(){
		
		aux = inicio;
		if (inicio == NULL){
			printf("\nLista de Músicas vazia!");
		}else{
			while (aux != NULL){
				printf("Título: %s", aux->titulo);
				printf("Intérprete: %s", aux->inter);
				printf("Single: %d\n\n", aux->single);
				printf("Duração: %f\n\n", aux->duracao);
				printf("Ano de Lançamento: %i\n\n", aux->ano);
				printf("Quantidade de Downloads: %i\n\n", aux->dw);
				aux = aux->prox;
			}
		}
		
		printf("\n\n");
		
	}
	
	void localizarInter(){
		
		char inter[40];
		aux = inicio;
		if (inicio == NULL){
			printf("\nLista de Músicas vazia!");
		}else{
			printf("Digite o Intérprete que procura: ");
			scanf("%s", &aux);
			while (aux != NULL){
				if (inter == aux->inter){
					printf("\nIntérprete  %s localizado/a!\n\n", aux->inter);
					printf("Título %s", aux->titulo);
					return;
				}else{
					aux = aux->prox;
				}
			
			}
			
			if (aux == NULL){
				printf("\nMúsica  %s nao localizada!\n", titulo);
			}
		}
		printf("\n\n");
	}
		
	int main(){
		
		setlocale(LC_ALL, "Portuguese");
		int op, c;
		
		do{
			printf("| 1. Inserir Música         |\n");
			printf("| 2. Pesquisar Músicas      |\n");
			printf("| 3. listar  Músicas        |\n");
			printf("| 4. Limpar Lista           |\n");
			printf("| 5. Sair                   |\n");
			
			printf("Insira a sua escolha: ");
			scanf("%d", &op);
			
			while ((c = getchar()) != '\n' && c != EOF) {}   // Limpar buffer
			
			switch (op){
				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 (op != 5);
		
		return 0;
	}

 

fortunecat

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.