Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alan Correa FACOS

função cadastrar em uma estrutura dentro de outra estrutura

Recommended Posts

Olá pessoal...estou fazendo um programa com duas estruturas, uma é de Album de Musicas e outra estrutura com Musicas.

 

precisa ter algumas funções:

 

AlocaNoAlbum();

AlocaNoMusicas();

LiberaNoAlbum(stAlbum *p);

LiberaNoAMusicas(stMusicas *p);

InsertAlbum();

InsertMusicas();

ApagaAlbum();

ApagaMusucas();

ExibirAlbum();

 

Estou com problemas na função InsertMusicas dentro de Insert Album.

gostaria que voces olhassem o que fiz até agora, e me dessem uma luz...obrigado!

#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <stdlib.h>
#define TAM_LISTA 500

/***********************************ESTRUTURAS****/
typedef struct musicas
{
   char nomeMusica [30];
   float tempo;
   struct musicas *ponteiroProximoSTmusicas;
}stMusicas;

typedef struct Album
{
   int codigo;
   char nomeAlbum [30];
   char conjunto [20];
   int qtdMusicas;
   float preco;
   int ano;
   struct Album *ponteiroProximoSTalbum;
   struct musicas *ponteiroProximoSTmusicas;
}stAlbum;

stAlbum *ponteiroAlbum=NULL;
int nCodigo;
/***********************************prototipo das funções****/
stAlbum *AlocaNoAlbum();
stMusicas *AlocaNoMusicas();

void LiberaNoAlbum(stAlbum *p);
void LiberaNoAMusicas(stMusicas *p);

void InsertAlbum();
void InsertMusicas();

void ExibirAlbum();


/***********************************função aloca no album*****/
stAlbum *AlocaNoAlbum()
{  return (stAlbum*) calloc (1,sizeof(stAlbum));  }      
/***********************************função libera no album****/
void LiberaNoAlbum(stAlbum *p)
{  free(p);  }
/***********************************função aloca no musicas***/
stMusicas *AlocaNoMusicas()
{  return (stMusicas*) calloc (1,sizeof(stMusicas));  }  
/***********************************função libera no musicas**/
void LiberaNoAMusicas(stMusicas *p)
{  free(p);  }



/***********************************função insert album*******/
void InsertAlbum()
{
   stAlbum *ponteiroTEMPalbum = AlocaNoAlbum(), *p;

   printf("CADASTRAR CD\n\n");

   printf("Digite o codigo: ");
   fflush(stdin);
   scanf("%d", &ponteiroTEMPalbum->codigo);

   printf("Digite o nome: ");
   fflush(stdin);
   gets(ponteiroTEMPalbum->nomeAlbum);

   printf("informe Nome do Conjunto: ");
   fflush(stdin);
   gets(ponteiroTEMPalbum->conjunto);

   printf("informe Quantidade de Musicas: ");
   fflush(stdin);
   scanf("%d", &ponteiroTEMPalbum->qtdMusicas);

   printf("informe Preco: ");
   fflush(stdin);
   scanf("%f", &ponteiroTEMPalbum->preco);

   printf("informe Ano: ");
   fflush(stdin);
   scanf("%d", &ponteiroTEMPalbum->ano);

               if (ponteiroAlbum == NULL)
                   ponteiroAlbum = ponteiroTEMPalbum;
               else
               {
                   for (p = ponteiroAlbum; p->ponteiroProximoSTalbum; p=p->ponteiroProximoSTalbum);
                   p->ponteiroProximoSTalbum = ponteiroTEMPalbum;
               }
   printf("CADASTRO ALBUM REALIZADO COM SUCESSO");
   fflush(stdin);
   getchar();
}
/***********************************função insert musicas*******/
void InsertMusicas()
{
    stMusicas *ponteiroTEMPmusicas, *p;
    ponteiroTEMPmusicas = AlocaNoMusicas();

    stAlbum *ponteiro2;
    int nCodigo;

    nCodigo= *ponteiroNCodigo;
    ponteiroNCodigo=nCodigo;

    printf("Informe Código Album para incluir musicas");
    scanf("%d", &nCodigo->ponteiro2.codigo);

    if (! ponteiroNCodigo-> ponteiroTEMPmusicas.codigo)
    {
           printf("Crie primeiro um Album!");
    }

    else ( ponteiroNCodigo ==  ponteiro2.codigo) 
    {
        printf("Digite o nome da Musica");
        scanf("%s",&ponteiroTEMPmusicas->nomeMusica);
        printf("Digite o tempo da musica (em segundos)");
        scanf("%f",&ponteiroTEMPmusicas->tempo);
        for (ponteiro2=ponteiroAlbum;ponteiro2->ponteiroProximoSTalbum!=NULL;ponteiro2=ponteiro2->ponteiroProximoSTalbum);
        if (ponteiro2->ponteiroProximoSTmusicas == NULL)
            ponteiro2->ponteiroProximoSTmusicas=temp;
        else
        {
            for (p=ponteiro2->ponteiroProximoSTmusicas; p->ponteiroProximoSTmusicas; p=p->ponteiroProximoSTmusicas)addend;
                 p->ponteiroProximoSTmusicas=ponteiroTEMPmusicas;

                }
    }


/***********************************função exibir album****/

void Exibir()
{
stAlbum *p=ponteiroAlbum;
stMusicas *p2;
nCodigo *ponteiroNcodigo;

printf("informe Codigo Album para pesquisar");
scanf("%d", &nCodigo);

if (p == NULL)
{
    printf("album não existe");

else
{

while(p != NULL) {
printf("\nNome CD: %s",p->nomeAlbum);
printf("\nNome Conjunto: %s",p->conjunto);
printf("\nQuantidade Musicas: %d",p->qtMusicas);
printf("\bPreco: %.2f",p->preço);
printf("\nAno: %d",p->ano);
printf("Nome Musicas: %s", p->nomeMusica);
printf("Tempo da Faixa: %s", p->tempo);
p=p->ponteiroProximoSTalbum;
}

/***********************************FUNÇÃO PRINCIPAL****/
int main ()
{
void InsertAlbum();
void InsertMusicas();
void ExibirAlbum();
fflush(stdin);
getchar();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

typedef struct musicas
{
   char nomeMusica [30];
   float tempo;
   struct musicas *ponteiroProximoSTmusicas;
}stMusicas;

 

Essa declaração está incorreta, o correto seria:

 

musicas * proximo;

 

ao invés de:

struct musicas *ponteiroProximoSTmusicas;

 

 

OBS: POSTE OS ERROS AO COMPILAR, SE HOUVER ALGUM.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.