Ir ao conteúdo
  • Cadastre-se
lPaulo23

C como usar o return nessa situação? linguagem em C

Posts recomendados

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define vagas 40

typedef struct CadastroAluno{
        int idnome;
        char nome[30];
        int qtdnomes;
    }CadastroAluno;

 typedef struct CadastroDisciplina{
    int iddisciplina;
    char disciplina[30];
    int qtdalunos;
    int alunoscadastradosemdisciplina[vagas];

 }CadastroDisciplina;

CadastroAluno cadastroaluno();
CadastroDisciplina cadastrodisciplina();
void Menu();
void ListarAluno();
void cadastroalunoemdisciplina();
void ListarDisciplina();
int excluiralunodedisciplina();
void listaridalunosmatriculadosemdisciplina(); //Falta fazer ainda


int main (){


    CadastroAluno Aluno[100];
    CadastroDisciplina Disciplina[100];

    Aluno[0].qtdnomes = 0;
    Disciplina[0].qtdalunos = 0;
    Disciplina[1].qtdalunos = 0;


    Menu(Aluno, Disciplina);
    int Ret = excluiralunodedisciplina(Aluno, Disciplina);

    if (Ret == 1) printf("\nAluno Excluido com Sucesso!\n"); //Resolver
    if (Ret == 2) printf("\nAluno nao encontrado!\n"); //Resolver
    if (Ret == 3) printf("\nDisciplina nao encontrada!\n"); //Resolver



 system ("Pause");
 return 0;
}

void Menu(CadastroAluno Aluno[], CadastroDisciplina Disciplina[]){
    int opc;


    do{

    printf("\nInforme [1] para cadastrar!");
    printf("\nInforme [2] para Listar Alunos!");
    printf("\nInforme [3] para Cadastrar Disciplina!");
    printf("\nInforme [4] para Listar Disciplinas!");
    printf("\nInforme [5] para Cadastrar Aluno em Disciplina!");
    printf("\nInforme [6] para Excluir Aluno de Disciplina!");
    printf("\nInforme [0] para Sair!");
    printf("\nInforme a opcao: ");
    scanf("%d", &opc);

 if(opc == 1) cadastroaluno(Aluno);

 if (opc == 2) ListarAluno(Aluno);

 if (opc == 3) cadastrodisciplina(Disciplina);

 if (opc == 4) ListarDisciplina(Disciplina);

 if (opc == 5) cadastroalunoemdisciplina(Aluno, Disciplina);

 if (opc == 6) excluiralunodedisciplina(Aluno, Disciplina);



}while(opc != 0);
}

CadastroAluno cadastroaluno(CadastroAluno Aluno[]){
    printf("\nInforme Nome %d: ", Aluno[0].qtdnomes+1);
    fflush(stdin);
    gets(Aluno[Aluno[0].qtdnomes].nome);
    printf("\nInforme ID_aluno: ");
    scanf("%i", &Aluno[Aluno[0].qtdnomes].idnome);
    fflush(stdin);
    Aluno[0].qtdnomes++;
    printf("\nQuantidade de nomes: %i\n", Aluno[0].qtdnomes);
 }


void ListarAluno(CadastroAluno Aluno[]){
    if(Aluno[0].qtdnomes > 0){
    int cont = 0;
    while(cont < Aluno[0].qtdnomes){
        printf("\nNome %d: %s\n", cont+1, Aluno[cont].nome);
        printf("\nID_aluno : %d\n", Aluno[cont].idnome);
        printf("__________\n");
        cont++;
    }
    }
    else {
        printf("\nNenhum Aluno Cadastrado!\n");
    }
}


CadastroDisciplina cadastrodisciplina(CadastroDisciplina Disciplina[]){
    printf("\nInforme Nome da disciplina %d: ", Disciplina[0].qtdalunos+1);
    fflush(stdin);
    gets(Disciplina[Disciplina[0].qtdalunos].disciplina);
    printf("\nInforme ID_Disciplina: ");
    scanf("%i", &Disciplina[Disciplina[0].qtdalunos].iddisciplina);
    fflush(stdin);
    printf("\nID_Disciplina : %i esta na posicao %i\n", Disciplina[Disciplina[0].qtdalunos].iddisciplina, Disciplina[0].qtdalunos);
    Disciplina[0].qtdalunos++;
    printf("\nQuantidade de Disciplina: %i\n", Disciplina[0].qtdalunos);
}

void ListarDisciplina(CadastroDisciplina Disciplina[]){
    if(Disciplina[0].qtdalunos > 0){
    int cont = 0;
    while(cont < Disciplina[0].qtdalunos){
        printf("\nNome da Disciplina %d: %s\n", cont+1, Disciplina[cont].disciplina);
        printf("\nID_Disciplina : %d\n", Disciplina[cont].iddisciplina);
        printf("__________\n");
        cont++;
    }
    }
    else {
        printf("\nNenhuma disciplina cadastrada!\n");
    }
}

void cadastroalunoemdisciplina(CadastroAluno Aluno[], CadastroDisciplina Disciplina[]){
    int iddisciplina;
    int idaluno;
    int cont;
    int EncontradoA = 0;
    int EncontradoD = 0;

    printf("\nInforme o ID_Disciplina da Disciplina que vai cadastrar o Aluno: ");
    scanf("%i", &iddisciplina);

     for(cont = 0; cont <= 100; cont++){
        if(iddisciplina == Disciplina[cont].iddisciplina){
        EncontradoD = 1;
        }
     }

    printf("\nInforme o ID_Aluno do Aluno que vai ser cadastrado na Disciplina informada: ");
    scanf("%i", &idaluno);

    for(cont = 0; cont <= 100; cont++){
        if(idaluno == Aluno[cont].idnome){
                Disciplina[cont].alunoscadastradosemdisciplina[cont] = idaluno;
                EncontradoA = 1;
                Disciplina[1].qtdalunos++;
                printf("\nAluno %i cadastrado na posicao %i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont], cont);
        }
    }

     if(EncontradoA == 1 && EncontradoD == 1){
        printf("\nAluno Cadastrado com Sucesso!\n");
        printf("\nQuantidade de Alunos nessa disciplina: %i\n", Disciplina[1].qtdalunos);
     }
        else if (EncontradoA != 1){
                printf("\nAluno nao encontrado!\n");
        }
        else if(EncontradoD != 1){
                printf("\nDisciplina nao encontrada!\n");
        }

    printf("id_disciplina: %i\n", iddisciplina);
    printf("id_aluno: %i\n", idaluno);
}

void listaridalunosmatriculadosemdisciplina(CadastroDisciplina Disciplina[]){
    //Falta fazer
}

int excluiralunodedisciplina (CadastroAluno Aluno[], CadastroDisciplina Disciplina[]){
    int idaluno;
    int iddisciplina;
    int cont;
    int EncontradoA = 0;
    int EncontradoD = 0;


    printf("\nInforme o ID_Disciplina da Disciplina que vai ser excluido o Aluno: ");
    scanf("%i", &iddisciplina);

    for(cont = 0; cont <= 100; cont++){
        if(iddisciplina == Disciplina[cont].iddisciplina){
            EncontradoD = 1;
        }
     }

     printf("\nInforme o ID_Aluno do Aluno a ser excluido da disciplina: ");
     scanf("%i", &idaluno);

     for(cont = 0; cont <= 100; cont++){
        if(idaluno == Aluno[cont].idnome){
            EncontradoA = 1;
        }
     }

     for(cont = 0; cont < Disciplina[1].qtdalunos; cont++){
        if(idaluno == Disciplina[cont].alunoscadastradosemdisciplina[cont]){
            printf("\n%i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont]); //Aluno Cadastrado
            Disciplina[cont].alunoscadastradosemdisciplina[cont] = '\0';
            Disciplina[1].qtdalunos--;
            printf("\n%i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont]); //Aluno Após ser excluído
        }
     }

     if(EncontradoA == 1 && EncontradoD == 1){
        //printf("\nAluno Excluido com Sucesso!\n");
        printf("\nQuantidade de Alunos nessa disciplina: %i\n", Disciplina[1].qtdalunos);
        return 1;
     }
        else if (EncontradoA != 1){
                //printf("\nAluno nao encontrado!\n");
                return 2;
        }
        else if(EncontradoD != 1){
                //printf("\nDisciplina nao encontrada!\n");
                return 3;
        }
}

Oi gente tudo bem! Eu queria imprimir essas condições no main, alguém sabe dizer qual meu erro ? porque ele não está imprimindo ? Eu chamei o módulo excluiralunodedisciplina de forma errada ? Qual problema na hora de retornar ?

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não rodei aqui e não sei qual erro está tendo aí. Mas eu acredito que seja a falta de um return na função excluiralunodedisciplina.

Ali todos os returns estão dentro de IF`s, você precisa ter pelo menos um que seja chamado caso nenhum outro seja.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@MassakiMsk Eu coloquei o return como você falou, e mesmo assim não imprimiu. O problema é que não está imprimindo 

 

if (Ret == 1) printf("\nAluno Excluido com Sucesso!\n"); //Resolver

if (Ret == 2) printf("\nAluno nao encontrado!\n"); //Resolver

if (Ret == 3) printf("\nDisciplina nao encontrada!\n"); //Resolver

Compartilhar este post


Link para o post
Compartilhar em outros sites

você quer imprimir no main mas você ta chamando excluiralunodedisciplina dentro da função menu, e depois você chama novamente excluiralunodedisciplina em main... o correto é chamar só dentro do menu.

adicionado 6 minutos depois

E para que fique claro, return serve para duas coisas... deter o programa e retornar um valor. Até uma função void pode ter um return, porém sem valor, tipo void foo(){ return; }.

Se uma função for declarado como int, você pode ter 200 returns dentro de ifs, switchs, etc, mas antes de sair da função você precisa por um return algo fora desses casos.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@vangodp como eu chamaria no menu apenas ? porque no menu quando coloco Ret = Menu dá erro. 

4 horas atrás, MassakiMsk disse:

Eu não rodei aqui e não sei qual erro está tendo aí. Mas eu acredito que seja a falta de um return na função excluiralunodedisciplina.

Ali todos os returns estão dentro de IF`s, você precisa ter pelo menos um que seja chamado caso nenhum outro seja.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
6 horas atrás, vangodp disse:

você quer imprimir no main mas você ta chamando excluiralunodedisciplina dentro da função menu, e depois você chama novamente excluiralunodedisciplina em main... o correto é chamar só dentro do menu.

adicionado 6 minutos depois

E para que fique claro, return serve para duas coisas... deter o programa e retornar um valor. Até uma função void pode ter um return, porém sem valor, tipo void foo(){ return; }.

Se uma função for declarado como int, você pode ter 200 returns dentro de ifs, switchs, etc, mas antes de sair da função você precisa por um return algo fora desses casos.

 

Se eu chamo o menu colocando Ret = Menu(Aluno, Disciplina); Ele não copila, dá erro dessa forma. Como faço para resolver ? Sabem o que está dando erro para não retornar o valor certo e imprimir as condições ?
 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define vagas 40

typedef struct CadastroAluno{
        int idnome;
        char nome[30];
        int qtdnomes;
    }CadastroAluno;

 typedef struct CadastroDisciplina{
    int iddisciplina;
    char disciplina[30];
    int qtdalunos;
    int alunoscadastradosemdisciplina[vagas];

 }CadastroDisciplina;

CadastroAluno cadastroaluno();
CadastroDisciplina cadastrodisciplina();
void Menu();
void ListarAluno();
void cadastroalunoemdisciplina();
void ListarDisciplina();
int excluiralunodedisciplina();
void listaridalunosmatriculadosemdisciplina(); //Falta fazer ainda


int main (){


    CadastroAluno Aluno[100];
    CadastroDisciplina Disciplina[100];

    Aluno[0].qtdnomes = 0;
    Disciplina[0].qtdalunos = 0;
    Disciplina[1].qtdalunos = 0;


    int Ret =Menu(Aluno, Disciplina);


    if (Ret == 1) printf("\nAluno Excluido com Sucesso!\n"); //Resolver
    if (Ret == 2) printf("\nAluno nao encontrado!\n"); //Resolver
    if (Ret == 3) printf("\nDisciplina nao encontrada!\n"); //Resolver



 system ("Pause");
 return 0;
}

void Menu(CadastroAluno Aluno[], CadastroDisciplina Disciplina[]){
    int opc;


    do{

    printf("\nInforme [1] para cadastrar!");
    printf("\nInforme [2] para Listar Alunos!");
    printf("\nInforme [3] para Cadastrar Disciplina!");
    printf("\nInforme [4] para Listar Disciplinas!");
    printf("\nInforme [5] para Cadastrar Aluno em Disciplina!");
    printf("\nInforme [6] para Excluir Aluno de Disciplina!");
    printf("\nInforme [0] para Sair!");
    printf("\nInforme a opcao: ");
    scanf("%d", &opc);

 if(opc == 1) cadastroaluno(Aluno);

 if (opc == 2) ListarAluno(Aluno);

 if (opc == 3) cadastrodisciplina(Disciplina);

 if (opc == 4) ListarDisciplina(Disciplina);

 if (opc == 5) cadastroalunoemdisciplina(Aluno, Disciplina);

 if (opc == 6) excluiralunodedisciplina(Aluno, Disciplina);



}while(opc != 0);
}

CadastroAluno cadastroaluno(CadastroAluno Aluno[]){
    printf("\nInforme Nome %d: ", Aluno[0].qtdnomes+1);
    fflush(stdin);
    gets(Aluno[Aluno[0].qtdnomes].nome);
    printf("\nInforme ID_aluno: ");
    scanf("%i", &Aluno[Aluno[0].qtdnomes].idnome);
    fflush(stdin);
    Aluno[0].qtdnomes++;
    printf("\nQuantidade de nomes: %i\n", Aluno[0].qtdnomes);
 }


void ListarAluno(CadastroAluno Aluno[]){
    if(Aluno[0].qtdnomes > 0){
    int cont = 0;
    while(cont < Aluno[0].qtdnomes){
        printf("\nNome %d: %s\n", cont+1, Aluno[cont].nome);
        printf("\nID_aluno : %d\n", Aluno[cont].idnome);
        printf("__________\n");
        cont++;
    }
    }
    else {
        printf("\nNenhum Aluno Cadastrado!\n");
    }
}


CadastroDisciplina cadastrodisciplina(CadastroDisciplina Disciplina[]){
    printf("\nInforme Nome da disciplina %d: ", Disciplina[0].qtdalunos+1);
    fflush(stdin);
    gets(Disciplina[Disciplina[0].qtdalunos].disciplina);
    printf("\nInforme ID_Disciplina: ");
    scanf("%i", &Disciplina[Disciplina[0].qtdalunos].iddisciplina);
    fflush(stdin);
    printf("\nID_Disciplina : %i esta na posicao %i\n", Disciplina[Disciplina[0].qtdalunos].iddisciplina, Disciplina[0].qtdalunos);
    Disciplina[0].qtdalunos++;
    printf("\nQuantidade de Disciplina: %i\n", Disciplina[0].qtdalunos);
}

void ListarDisciplina(CadastroDisciplina Disciplina[]){
    if(Disciplina[0].qtdalunos > 0){
    int cont = 0;
    while(cont < Disciplina[0].qtdalunos){
        printf("\nNome da Disciplina %d: %s\n", cont+1, Disciplina[cont].disciplina);
        printf("\nID_Disciplina : %d\n", Disciplina[cont].iddisciplina);
        printf("__________\n");
        cont++;
    }
    }
    else {
        printf("\nNenhuma disciplina cadastrada!\n");
    }
}

void cadastroalunoemdisciplina(CadastroAluno Aluno[], CadastroDisciplina Disciplina[]){
    int iddisciplina;
    int idaluno;
    int cont;
    int EncontradoA = 0;
    int EncontradoD = 0;

    printf("\nInforme o ID_Disciplina da Disciplina que vai cadastrar o Aluno: ");
    scanf("%i", &iddisciplina);

     for(cont = 0; cont <= 100; cont++){
        if(iddisciplina == Disciplina[cont].iddisciplina){
        EncontradoD = 1;
        }
     }

    printf("\nInforme o ID_Aluno do Aluno que vai ser cadastrado na Disciplina informada: ");
    scanf("%i", &idaluno);

    for(cont = 0; cont <= 100; cont++){
        if(idaluno == Aluno[cont].idnome){
                Disciplina[cont].alunoscadastradosemdisciplina[cont] = idaluno;
                EncontradoA = 1;
                Disciplina[1].qtdalunos++;
                printf("\nAluno %i cadastrado na posicao %i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont], cont);
        }
    }

     if(EncontradoA == 1 && EncontradoD == 1){
        printf("\nAluno Cadastrado com Sucesso!\n");
        printf("\nQuantidade de Alunos nessa disciplina: %i\n", Disciplina[1].qtdalunos);
     }
        else if (EncontradoA != 1){
                printf("\nAluno nao encontrado!\n");
        }
        else if(EncontradoD != 1){
                printf("\nDisciplina nao encontrada!\n");
        }

    printf("id_disciplina: %i\n", iddisciplina);
    printf("id_aluno: %i\n", idaluno);
}

void listaridalunosmatriculadosemdisciplina(CadastroDisciplina Disciplina[]){
    //Falta fazer
}

int excluiralunodedisciplina (CadastroAluno Aluno[], CadastroDisciplina Disciplina[]){
    int idaluno;
    int iddisciplina;
    int cont;
    int EncontradoA = 0;
    int EncontradoD = 0;


    printf("\nInforme o ID_Disciplina da Disciplina que vai ser excluido o Aluno: ");
    scanf("%i", &iddisciplina);

    for(cont = 0; cont <= 100; cont++){
        if(iddisciplina == Disciplina[cont].iddisciplina){
            EncontradoD = 1;
        }
     }

     printf("\nInforme o ID_Aluno do Aluno a ser excluido da disciplina: ");
     scanf("%i", &idaluno);

     for(cont = 0; cont <= 100; cont++){
        if(idaluno == Aluno[cont].idnome){
            EncontradoA = 1;
        }
     }

     for(cont = 0; cont < Disciplina[1].qtdalunos; cont++){
        if(idaluno == Disciplina[cont].alunoscadastradosemdisciplina[cont]){
            printf("\n%i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont]); //Aluno Cadastrado
            Disciplina[cont].alunoscadastradosemdisciplina[cont] = '\0';
            Disciplina[1].qtdalunos--;
            printf("\n%i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont]); //Aluno Após ser excluído
        }
     }

     if(EncontradoA == 1 && EncontradoD == 1){
        //printf("\nAluno Excluido com Sucesso!\n");
        printf("\nQuantidade de Alunos nessa disciplina: %i\n", Disciplina[1].qtdalunos);
        return 1;
     }
        else if (EncontradoA != 1){
                //printf("\nAluno nao encontrado!\n");
                return 2;
        }
        else if(EncontradoD != 1){
                //printf("\nDisciplina nao encontrada!\n");
                return 3;
        }
        return 0;
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 10/12/2019 às 02:35, lPaulo23 disse:

Se eu chamo o menu colocando Ret = Menu(Aluno, Disciplina); Ele não copila, dá erro dessa forma. Como faço para resolver ? Sabem o que está dando erro para não retornar o valor certo e imprimir as condições ?
 

É só declarar menu como int em vez de void, e dentro de menu guardar o valor de retornado por excluiralunodedisciplina, para logo retornar esse valor a main de volta.

Spoiler

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define vagas 40

typedef struct CadastroAluno {
    int idnome;
    char nome[30];
    int qtdnomes;
} CadastroAluno;

typedef struct CadastroDisciplina {
    int iddisciplina;
    char disciplina[30];
    int qtdalunos;
    int alunoscadastradosemdisciplina[vagas];
    
} CadastroDisciplina;

CadastroAluno cadastroaluno();
CadastroDisciplina cadastrodisciplina();
int Menu();
void ListarAluno();
void cadastroalunoemdisciplina();
void ListarDisciplina();
int excluiralunodedisciplina();
void listaridalunosmatriculadosemdisciplina(); //Falta fazer ainda


int main () {


    CadastroAluno Aluno[100];
    CadastroDisciplina Disciplina[100];
    
    Aluno[0].qtdnomes = 0;
    Disciplina[0].qtdalunos = 0;
    Disciplina[1].qtdalunos = 0;
    
    
    int Ret = Menu ( Aluno, Disciplina );
    
    
    if ( Ret == 1 ) printf ( "\nAluno Excluido com Sucesso!\n" ); //Resolver
    
    if ( Ret == 2 ) printf ( "\nAluno nao encontrado!\n" ); //Resolver
    
    if ( Ret == 3 ) printf ( "\nDisciplina nao encontrada!\n" ); //Resolver
    
    
    
    system ( "Pause" );
    return 0;
}

int Menu ( CadastroAluno Aluno[], CadastroDisciplina Disciplina[] ) {
    int opc;
    int retorno = -1;
    
    do {
    
        printf ( "\nInforme [1] para cadastrar!" );
        printf ( "\nInforme [2] para Listar Alunos!" );
        printf ( "\nInforme [3] para Cadastrar Disciplina!" );
        printf ( "\nInforme [4] para Listar Disciplinas!" );
        printf ( "\nInforme [5] para Cadastrar Aluno em Disciplina!" );
        printf ( "\nInforme [6] para Excluir Aluno de Disciplina!" );
        printf ( "\nInforme [0] para Sair!" );
        printf ( "\nInforme a opcao: " );
        scanf ( "%d", &opc );
        
        if ( opc == 1 ) cadastroaluno ( Aluno );
        
        if ( opc == 2 ) ListarAluno ( Aluno );
        
        if ( opc == 3 ) cadastrodisciplina ( Disciplina );
        
        if ( opc == 4 ) ListarDisciplina ( Disciplina );
        
        if ( opc == 5 ) cadastroalunoemdisciplina ( Aluno, Disciplina );
        
        if ( opc == 6 ) retorno = excluiralunodedisciplina ( Aluno, Disciplina );
        
        if( opc > 6 ) retorno = 0;
        
        
    } while ( opc != 0 );
    
    return retorno;
}

CadastroAluno cadastroaluno ( CadastroAluno Aluno[] ) {
    printf ( "\nInforme Nome %d: ", Aluno[0].qtdnomes + 1 );
    fflush ( stdin );
    gets ( Aluno[Aluno[0].qtdnomes].nome );
    printf ( "\nInforme ID_aluno: " );
    scanf ( "%i", &Aluno[Aluno[0].qtdnomes].idnome );
    fflush ( stdin );
    Aluno[0].qtdnomes++;
    printf ( "\nQuantidade de nomes: %i\n", Aluno[0].qtdnomes );
}


void ListarAluno ( CadastroAluno Aluno[] ) {
    if ( Aluno[0].qtdnomes > 0 ) {
        int cont = 0;
        
        while ( cont < Aluno[0].qtdnomes ) {
            printf ( "\nNome %d: %s\n", cont + 1, Aluno[cont].nome );
            printf ( "\nID_aluno : %d\n", Aluno[cont].idnome );
            printf ( "__________\n" );
            cont++;
        }
    } else {
        printf ( "\nNenhum Aluno Cadastrado!\n" );
    }
}


CadastroDisciplina cadastrodisciplina ( CadastroDisciplina Disciplina[] ) {
    printf ( "\nInforme Nome da disciplina %d: ", Disciplina[0].qtdalunos + 1 );
    fflush ( stdin );
    gets ( Disciplina[Disciplina[0].qtdalunos].disciplina );
    printf ( "\nInforme ID_Disciplina: " );
    scanf ( "%i", &Disciplina[Disciplina[0].qtdalunos].iddisciplina );
    fflush ( stdin );
    printf ( "\nID_Disciplina : %i esta na posicao %i\n", Disciplina[Disciplina[0].qtdalunos].iddisciplina, Disciplina[0].qtdalunos );
    Disciplina[0].qtdalunos++;
    printf ( "\nQuantidade de Disciplina: %i\n", Disciplina[0].qtdalunos );
}

void ListarDisciplina ( CadastroDisciplina Disciplina[] ) {
    if ( Disciplina[0].qtdalunos > 0 ) {
        int cont = 0;
        
        while ( cont < Disciplina[0].qtdalunos ) {
            printf ( "\nNome da Disciplina %d: %s\n", cont + 1, Disciplina[cont].disciplina );
            printf ( "\nID_Disciplina : %d\n", Disciplina[cont].iddisciplina );
            printf ( "__________\n" );
            cont++;
        }
    } else {
        printf ( "\nNenhuma disciplina cadastrada!\n" );
    }
}

void cadastroalunoemdisciplina ( CadastroAluno Aluno[], CadastroDisciplina Disciplina[] ) {
    int iddisciplina;
    int idaluno;
    int cont;
    int EncontradoA = 0;
    int EncontradoD = 0;
    
    printf ( "\nInforme o ID_Disciplina da Disciplina que vai cadastrar o Aluno: " );
    scanf ( "%i", &iddisciplina );
    
    for ( cont = 0; cont <= 100; cont++ ) {
        if ( iddisciplina == Disciplina[cont].iddisciplina ) {
            EncontradoD = 1;
        }
    }
    
    printf ( "\nInforme o ID_Aluno do Aluno que vai ser cadastrado na Disciplina informada: " );
    scanf ( "%i", &idaluno );
    
    for ( cont = 0; cont <= 100; cont++ ) {
        if ( idaluno == Aluno[cont].idnome ) {
            Disciplina[cont].alunoscadastradosemdisciplina[cont] = idaluno;
            EncontradoA = 1;
            Disciplina[1].qtdalunos++;
            printf ( "\nAluno %i cadastrado na posicao %i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont], cont );
        }
    }
    
    if ( EncontradoA == 1 && EncontradoD == 1 ) {
        printf ( "\nAluno Cadastrado com Sucesso!\n" );
        printf ( "\nQuantidade de Alunos nessa disciplina: %i\n", Disciplina[1].qtdalunos );
    } else if ( EncontradoA != 1 ) {
        printf ( "\nAluno nao encontrado!\n" );
    } else if ( EncontradoD != 1 ) {
        printf ( "\nDisciplina nao encontrada!\n" );
    }
    
    printf ( "id_disciplina: %i\n", iddisciplina );
    printf ( "id_aluno: %i\n", idaluno );
}

void listaridalunosmatriculadosemdisciplina ( CadastroDisciplina Disciplina[] ) {
    //Falta fazer
}

int excluiralunodedisciplina ( CadastroAluno Aluno[], CadastroDisciplina Disciplina[] ) {
    int idaluno;
    int iddisciplina;
    int cont;
    int EncontradoA = 0;
    int EncontradoD = 0;
    
    
    printf ( "\nInforme o ID_Disciplina da Disciplina que vai ser excluido o Aluno: " );
    scanf ( "%i", &iddisciplina );
    
    for ( cont = 0; cont <= 100; cont++ ) {
        if ( iddisciplina == Disciplina[cont].iddisciplina ) {
            EncontradoD = 1;
        }
    }
    
    printf ( "\nInforme o ID_Aluno do Aluno a ser excluido da disciplina: " );
    scanf ( "%i", &idaluno );
    
    for ( cont = 0; cont <= 100; cont++ ) {
        if ( idaluno == Aluno[cont].idnome ) {
            EncontradoA = 1;
        }
    }
    
    for ( cont = 0; cont < Disciplina[1].qtdalunos; cont++ ) {
        if ( idaluno == Disciplina[cont].alunoscadastradosemdisciplina[cont] ) {
            printf ( "\n%i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont] ); //Aluno Cadastrado
            Disciplina[cont].alunoscadastradosemdisciplina[cont] = '\0';
            Disciplina[1].qtdalunos--;
            printf ( "\n%i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont] ); //Aluno Após ser excluído
        }
    }
    
    if ( EncontradoA == 1 && EncontradoD == 1 ) {
        //printf("\nAluno Excluido com Sucesso!\n");
        printf ( "\nQuantidade de Alunos nessa disciplina: %i\n", Disciplina[1].qtdalunos );
        return 1;
    } else if ( EncontradoA != 1 ) {
        //printf("\nAluno nao encontrado!\n");
        return 2;
    } else if ( EncontradoD != 1 ) {
        //printf("\nDisciplina nao encontrada!\n");
        return 3;
    }
    
    return 0;
}

 


 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Achei o problema  da compilação , era na declaracão de escopos as funcoes estavam incorretas faltava os parametros.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define vagas 40

typedef struct CadastroAluno{
        int idnome;
        char nome[30];
        int qtdnomes;
    }CadastroAluno;

 typedef struct CadastroDisciplina{
    int iddisciplina;
    char disciplina[30];
    int qtdalunos;
    int alunoscadastradosemdisciplina[vagas];

 }CadastroDisciplina;

CadastroAluno cadastroaluno(CadastroAluno Aluno[]); //alterado
CadastroDisciplina cadastrodisciplina(CadastroDisciplina Disciplina[]); //alterado
void Menu(CadastroAluno Aluno[], CadastroDisciplina Disciplina[]); //alterado
void ListarAluno(CadastroAluno Aluno[]); //alterado
void cadastroalunoemdisciplina(CadastroAluno Aluno[], CadastroDisciplina Disciplina[]); //alterado
void ListarDisciplina(CadastroDisciplina Disciplina[]); //alterado
int excluiralunodedisciplina(CadastroAluno Aluno[], CadastroDisciplina Disciplina[]); //alterado
void listaridalunosmatriculadosemdisciplina(); //Falta fazer ainda


int main (){


    CadastroAluno Aluno[100];
    CadastroDisciplina Disciplina[100];

    Aluno[0].qtdnomes = 0;
    Disciplina[0].qtdalunos = 0;
    Disciplina[1].qtdalunos = 0;


    Menu(Aluno, Disciplina);
    int Ret = excluiralunodedisciplina(Aluno, Disciplina);

    if (Ret == 1) printf("\nAluno Excluido com Sucesso!\n"); //Resolver
    if (Ret == 2) printf("\nAluno nao encontrado!\n"); //Resolver
    if (Ret == 3) printf("\nDisciplina nao encontrada!\n"); //Resolver



 system ("Pause");
 return 0;
}

void Menu(CadastroAluno Aluno[], CadastroDisciplina Disciplina[]){
    int opc;


    do{

    printf("\nInforme [1] para cadastrar!");
    printf("\nInforme [2] para Listar Alunos!");
    printf("\nInforme [3] para Cadastrar Disciplina!");
    printf("\nInforme [4] para Listar Disciplinas!");
    printf("\nInforme [5] para Cadastrar Aluno em Disciplina!");
    printf("\nInforme [6] para Excluir Aluno de Disciplina!");
    printf("\nInforme [0] para Sair!");
    printf("\nInforme a opcao: ");
    scanf("%d", &opc);

 if(opc == 1) cadastroaluno(Aluno);

 if (opc == 2) ListarAluno(Aluno);

 if (opc == 3) cadastrodisciplina(Disciplina);

 if (opc == 4) ListarDisciplina(Disciplina);

 if (opc == 5) cadastroalunoemdisciplina(Aluno, Disciplina);

 if (opc == 6) excluiralunodedisciplina(Aluno, Disciplina);



}while(opc != 0);
}

CadastroAluno cadastroaluno(CadastroAluno Aluno[]){
    printf("\nInforme Nome %d: ", Aluno[0].qtdnomes+1);
    fflush(stdin);
    gets(Aluno[Aluno[0].qtdnomes].nome);
    printf("\nInforme ID_aluno: ");
    scanf("%i", &Aluno[Aluno[0].qtdnomes].idnome);
    fflush(stdin);
    Aluno[0].qtdnomes++;
    printf("\nQuantidade de nomes: %i\n", Aluno[0].qtdnomes);
 }


void ListarAluno(CadastroAluno Aluno[]){
    if(Aluno[0].qtdnomes > 0){
    int cont = 0;
    while(cont < Aluno[0].qtdnomes){
        printf("\nNome %d: %s\n", cont+1, Aluno[cont].nome);
        printf("\nID_aluno : %d\n", Aluno[cont].idnome);
        printf("__________\n");
        cont++;
    }
    }
    else {
        printf("\nNenhum Aluno Cadastrado!\n");
    }
}


CadastroDisciplina cadastrodisciplina(CadastroDisciplina Disciplina[]){
    printf("\nInforme Nome da disciplina %d: ", Disciplina[0].qtdalunos+1);
    fflush(stdin);
    gets(Disciplina[Disciplina[0].qtdalunos].disciplina);
    printf("\nInforme ID_Disciplina: ");
    scanf("%i", &Disciplina[Disciplina[0].qtdalunos].iddisciplina);
    fflush(stdin);
    printf("\nID_Disciplina : %i esta na posicao %i\n", Disciplina[Disciplina[0].qtdalunos].iddisciplina, Disciplina[0].qtdalunos);
    Disciplina[0].qtdalunos++;
    printf("\nQuantidade de Disciplina: %i\n", Disciplina[0].qtdalunos);
}

void ListarDisciplina(CadastroDisciplina Disciplina[]){
    if(Disciplina[0].qtdalunos > 0){
    int cont = 0;
    while(cont < Disciplina[0].qtdalunos){
        printf("\nNome da Disciplina %d: %s\n", cont+1, Disciplina[cont].disciplina);
        printf("\nID_Disciplina : %d\n", Disciplina[cont].iddisciplina);
        printf("__________\n");
        cont++;
    }
    }
    else {
        printf("\nNenhuma disciplina cadastrada!\n");
    }
}

void cadastroalunoemdisciplina(CadastroAluno Aluno[], CadastroDisciplina Disciplina[]){
    int iddisciplina;
    int idaluno;
    int cont;
    int EncontradoA = 0;
    int EncontradoD = 0;

    printf("\nInforme o ID_Disciplina da Disciplina que vai cadastrar o Aluno: ");
    scanf("%i", &iddisciplina);

     for(cont = 0; cont <= 100; cont++){
        if(iddisciplina == Disciplina[cont].iddisciplina){
        EncontradoD = 1;
        }
     }

    printf("\nInforme o ID_Aluno do Aluno que vai ser cadastrado na Disciplina informada: ");
    scanf("%i", &idaluno);

    for(cont = 0; cont <= 100; cont++){
        if(idaluno == Aluno[cont].idnome){
                Disciplina[cont].alunoscadastradosemdisciplina[cont] = idaluno;
                EncontradoA = 1;
                Disciplina[1].qtdalunos++;
                printf("\nAluno %i cadastrado na posicao %i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont], cont);
        }
    }

     if(EncontradoA == 1 && EncontradoD == 1){
        printf("\nAluno Cadastrado com Sucesso!\n");
        printf("\nQuantidade de Alunos nessa disciplina: %i\n", Disciplina[1].qtdalunos);
     }
        else if (EncontradoA != 1){
                printf("\nAluno nao encontrado!\n");
        }
        else if(EncontradoD != 1){
                printf("\nDisciplina nao encontrada!\n");
        }

    printf("id_disciplina: %i\n", iddisciplina);
    printf("id_aluno: %i\n", idaluno);
}

void listaridalunosmatriculadosemdisciplina(CadastroDisciplina Disciplina[]){
    //Falta fazer
}

int excluiralunodedisciplina (CadastroAluno Aluno[], CadastroDisciplina Disciplina[]){
    int idaluno;
    int iddisciplina;
    int cont;
    int EncontradoA = 0;
    int EncontradoD = 0;


    printf("\nInforme o ID_Disciplina da Disciplina que vai ser excluido o Aluno: ");
    scanf("%i", &iddisciplina);

    for(cont = 0; cont <= 100; cont++){
        if(iddisciplina == Disciplina[cont].iddisciplina){
            EncontradoD = 1;
        }
     }

     printf("\nInforme o ID_Aluno do Aluno a ser excluido da disciplina: ");
     scanf("%i", &idaluno);

     for(cont = 0; cont <= 100; cont++){
        if(idaluno == Aluno[cont].idnome){
            EncontradoA = 1;
        }
     }

     for(cont = 0; cont < Disciplina[1].qtdalunos; cont++){
        if(idaluno == Disciplina[cont].alunoscadastradosemdisciplina[cont]){
            printf("\n%i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont]); //Aluno Cadastrado
            Disciplina[cont].alunoscadastradosemdisciplina[cont] = '\0';
            Disciplina[1].qtdalunos--;
            printf("\n%i\n", Disciplina[cont].alunoscadastradosemdisciplina[cont]); //Aluno Após ser excluído
        }
     }

     if(EncontradoA == 1 && EncontradoD == 1){
        //printf("\nAluno Excluido com Sucesso!\n");
        printf("\nQuantidade de Alunos nessa disciplina: %i\n", Disciplina[1].qtdalunos);
        return 1;
     }
        else if (EncontradoA != 1){
                //printf("\nAluno nao encontrado!\n");
                return 2;
        }
        else if(EncontradoD != 1){
                //printf("\nDisciplina nao encontrada!\n");
                return 3;
        }
}

 

  • Curtir 1

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





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...

Aprenda_a_Ler_Resistores_e_Capacitores-capa-3d-newsletter.jpg

ebook grátis "Aprenda a ler resistores e capacitores", de Gabriel Torres

GRÁTIS! BAIXE AGORA MESMO!