Ir ao conteúdo
  • Cadastre-se

cadastro arquivos bin (trabalho)


arsenium
Ir à solução Resolvido por Edmorte,

Posts recomendados

Pessoal, eu não sei se posso postar, mas nesse código que eu fiz: http://pastebin.com/zrHV94qQ , na função musica_banda(), eu devo informar uma banda, e mostrar as musicas dela. Ok. Mas nesse caso, se eu não mudei nada, ele está pegando só as musicas do ultimo álbum da banda. Meu professor falou de na hora que eu pego o código do CD, usar um while dentro do outro, mas eu e minha dupla não conseguimos manipular dessa forma, na verdade não entendemos direito onde colocar esse novo while para ele passar novamente e pegar o código. Bom, acredito que vendo vocês vão entender melhor.

 

O que eu devo fazer:

 

"1. Adicionar bandas (já esta ok)
2. Adicionar álbuns e suas respectivas músicas, validando os dados (p. ex. Se a banda já foi cadastrada); (ja esta ok)
3. Consultar álbuns por banda (usuário informa o nome da banda); (ok)
4. Consultar músicas por banda (usuário informa o nome da banda) <-PROBLEMA
5. Consultar músicas por álbum (usuário informa o nome do álbum); (ok)
6. Consultar álbum por ano de lançamento;(ok)
As consultas podem retornar mais de um álbum/música. Neste caso, gerar uma lista que possibilite o usuário
escolher qual item que deseja acessar os detalhes."
 
Hã... vou tentar dar um exemplo
Digamos que a banda "AAA" tem dois álbuns, A e B, e em cada álbum tem duas musicas. Na hora que eu peço do usuário o nome da banda pra dar as suas musicas, o programa está imprimindo somente as musicas do álbum B... 

 

Link para o comentário
Compartilhar em outros sites

  • Solução
fread(&B, sizeof(Banda), 1, banda);while (!feof(banda)){	if (strcmp(B.nome, nome)==0){		cod_banda = B.cod_banda;	}	fread(&B, sizeof(Banda), 1, banda);}// Alteradorewind(album);fread(&A, sizeof(Album), 1, album);while (!feof(album)){	if (A.cod_banda2==cod_banda){		cod_cd=A.cod_cd;		// Para cada album da banda		rewind(musica);		fread(&M, sizeof(Musica), 1, musica);		while(!feof(musica)){			if (M.cod_cd2==cod_cd){				printf ("\n\tCodigo da Musica: %d\n", M.cod_musica);				printf ("\tCodigo do CD: %d\n", M.cod_cd2);				printf ("\tMusica: %s", M.musica);				printf ("\tDuracao: %d\n", M.duracao);				printf ("\tClassicacao: %d\n", M.estrelas);			}			fread(&M, sizeof(Musica), 1, musica);		}	}		fread(&A, sizeof(Album), 1, album);}

Desculpa a formatação ruim, conflito de editores.

 

Acho que esse ajuste deve funcionar, fiz de cabeça aqui.

 

Para cada album da banda, devemos ler suas músicas e imprimi-las. Coloquei o código dentro do IF, se o album é da banda faça, repita para o próximo album.

 

Se não funcionar, upa os bin carregados que eu testo.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...