Entre para seguir isso  
Seguidores 0
angelita dias

Lista ligada - Struct dentro de Struc

3 posts neste tópico

:confused:

Pessoal boa tarde,

Estou fazendo um projetinho sobre um gerenciameto simples de escola. Castrar um aluno, ou seja uma struct que tenha Nome, RA, Disciplina e nota. Ai que esta o problema os campos Disciplina e Nota devem ser outra struct pois um aluno pode estar matriculado em varias disciplinas diferentes, e a professora não que que utilize vetor apenas structs. Eu ja havia feito o projeto todo com uma struct só ai agora que fui ver que tinha que ser duas e tal... Sera que alguem consegue me esclarecer como fica o meu codigo com esta alteração ??? Eu ja comecei a mexer no começo ja estou muito confusa.

Segue o inicio do meu codigo e com a primeira função de inserir um novo aluno lembrando que não precisa ser em ordem nem nada insere no final mesmo.

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <string.h>

struct disciplina

{

* * * char disciplina [50];

* * * int nota;

* * * *struct disciplina *prox; * // ISSO AQUI EU ADICIONEI DEPOIS DE FALAR COM A PROFIS

};

struct aluno

{

* * * char nome[50];

* * * struct disciplina *dis;// ISSO AQUI EU ADICIONEI DEPOIS DE FALAR COM A PROFIS

* * * int RA;

* * * *struct aluno *prox;

};

//Inserir novo Aluno na lista... Opção 1

int ins_aluno(struct aluno **pListaAluno, struct disciplina **pListaDis)// ISSO AQUI EU ADICIONEI DEPOIS DE FALAR COM A PROFIS

{

* * system("cls");

* * fflush(stdin);

* * fflush(stdout);

* * char nome[50];

* * char disciplina [50];

* * int RA;

* * int nota;

* *

* * printf("Insira o nome do Aluno: ");

* * gets(nome);

* * printf("Insira a disciplina cursada: ");

* * gets(disciplina);

* * printf("Insira o RA: ");

* * scanf("%d",&RA);

* *

* * printf("Insira a Nota: ");

* * scanf("%d",&nota);

* * struct aluno *aux, *aux2, *aux3;

* * aux = (struct aluno*)malloc(sizeof(struct aluno));

* * aux3 = (struct disciplina*)malloc(sizeof(struct disciplina));

* * strcpy(aux->nome, nome);

* * strcpy(aux3->disciplina, disciplina); * // ISSO AQUI EU ADICIONEI DEPOIS DE FALAR COM A PROFIS

* * aux->RA = RA;

* * aux3->nota = nota;

* * aux->prox = NULL;

* * aux3-> prox = NULL;

* * if ((*pListaAluno) == NULL)

* * {

* * * *(*pListaAluno) = aux;

* * * *printf("\nAluno inserido com sucesso!\n ");

* * * *system("pause");

* * * *return (1);

* * }

* * else

* * {

* * * * aux2 = (*pListaAluno);

* * * *

* * * * while (aux2->prox != NULL)

* * * * {

* * * * * * aux2=aux2->prox;

* * * * * *

* * * * }

* * * *

* * * * aux2->prox = aux;

* * * * *printf("\nAluno inserido com sucesso!\n ");

* * * * *system("pause");

* * * * *return (1);

* * }

* *

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faltou só aux->dis=aux3;

E se você faz:

printf("\nAluno inserido com sucesso!\n ");

system("pause");

return (1);

Tanto pro if quanto pro else, bastava colocar uma vez ao final da função...

...

-

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola obrigada pela resposta!

Mas ainda nao consegui compilar pois ele ja da erro nesta lista:

aux3 = (struct disciplina*)malloc(sizeof(struct disciplina));

quando tento alocar memoria para o aux3, na verdade eu nao sei se eu deveria alocar memoria para esta variavel tambem....

E agoraa??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar agora
Entre para seguir isso  
Seguidores 0