Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Apagar informações de um vetor que esta em outra classe C+


FabricioAC

Pergunta

Olá, sou novo aqui no fórum e tenho uma duvida em relação a classes em C++, espero que alguém possa me ajudar. Desde já obrigado!

Estou desenvolvendo um trabalho pra faculdade em que preciso cadastrar alunos, disciplinas e notas e no final exibir alguns relatórios, tudo isso usando o conceito de classes e orientação a objetos. O programa esta 99% pronto só encontrei problemas para implementar o seguinte:

Tenho 6 classes implementadas (Não vou postar o codigo da Disciplina pois não vem ao caso):

Alunos

#ifndef ALUNOS_HPP_INCLUDED
#define ALUNOS_HPP_INCLUDED

#include "Bibliotecas.hpp"

class Aluno {
public:
    Aluno();

    string nome;
    string cpf;
    string bairro;
    string cidade;
    string endereco;
    string identidade;
    string estadoCivil;
    string dataNascimento;
    int numeroMatricula;
};

#endif // ALUNOS_HPP_INCLUDED

Cadastro Alunos

#ifndef CADASTROALUNOS_HPP_INCLUDED
#define CADASTROALUNOS_HPP_INCLUDED

#include "Alunos.hpp"
#include "CadastroNotas.hpp"

//class CadastroNotas;

class CadastroAlunos {
public:
    CadastroNotas cadNotas;

    Aluno alunos[100];
    int indice;

    CadastroAlunos() {indice = 0;}

    void cadastrarAlunos();
    void alterarAlunos();
    void excluirAlunos(CadastroNotas cadNotas);
    void listarAlunos();
    int pesquisar(int numMatricula);
};

#endif // CADASTROALUNOS_HPP_INCLUDED

Notas

#ifndef NOTAS_HPP_INCLUDED
#define NOTAS_HPP_INCLUDED

#include "Bibliotecas.hpp"
class Nota {
public:
    Nota();

    int codigoNota;
    int codigoMatricula;
    int codigoDisciplina;
    double media1;
    double media2;
    double media3;
    double media4;
    double mediaFinal;
    string nomeAluno;
    string nomeDisciplina;
};

#endif // NOTAS_HPP_INCLUDED

Cadastro Notas

#ifndef CADASTRONOTAS_HPP_INCLUDED
#define CADASTRONOTAS_HPP_INCLUDED

#include "Notas.hpp"
//#include "CadastroAlunos.hpp"
#include "CadastroDisciplinas.hpp"

class CadastroAlunos;

class CadastroNotas {
public:
    //CadastroAlunos cadAlunos;
    CadastroDisciplinas cadDisciplinas;

    Nota notas[100];
    int indice;

    CadastroNotas() {indice = 0;}

    void cadastrarNotas(CadastroAlunos cadAlunos, CadastroDisciplinas cadDisciplinas);
    void alterarNotas();
    void excluirNotas();
    void listarNotas();
    void excluirNotas(int numMatricula);
    int pesquisarMatricula(int pos);
    int pesquisarDisciplina(int pos);
    int comparaPosicao(int matricula, int disciplina);
    string aprovado_reprovado(int pos);
};

#endif // CADASTRONOTAS_HPP_INCLUDED

Nelas eu declaro meus vetores, as variaveis que tenho dentro de cada vetor e os prototipos da funções.

O programa funcionam 100%, mas falta implementar uma função que ao excluir um aluno do vetor de alunos que esta na classe Cadastro Alunos também tenho que excluir todas as notas cadastradas para este mesmo aluno, mas as notas estão em um vetor dentro de outra classe, a classe Cadastro Notas. Consigo excluir o aluno e as notas separadamente pois em cada classe tenho uma função excluir, mas de dentro da classe Cadastro Aluno não consigo apagar as notas na classe Cadastro Notas.

Minha função para exclur as notas (Ela esta no Notas.cpp onde estão minhas funções referentes as notas):

void CadastroNotas::excluirNotas(int numMatricula) {
    int pos = 0;
    do {
        pos = pesquisarMatricula(numMatricula);
        if(pos >= 0){
            for(int i = pos; i < indice; i++) {
                notas[pos] = notas[pos + 1];
                indice--;
            }
        }
    } while(pos >= 0);
}

Chamo esta função no meu arquivo Alunos.cpp em que tenho minhas funçoes para classe Aluno e Cadastro Aluno, consigo obter as informações do vetor mas não consigo altera-las. Se eu chama-la dentro do Notas.cpp onde estão minhas funçoes referentes as notas ele apaga as notas corretamente.

Como devo proceder para que consiga chamar de dentro do meu Alunos.cpp esta função e ela apague os dados do vetor de notas que esta na classe Cadastro Notas?

Se não entenderem alguma coisa ou precisarem de mais informações e só dizer.

Obrigado novamente!

Editado por FabricioAC
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Consegui resolver o problema, fiz o seguinte:

Alterei minha função de "void excluirAluno()" para "int excluirAluno()" me retornando depois do aluno excluído o numero da matricula e dentro do arquivo Menu.cpp onde ficam todos os menus que uso no programa, no "case 3" chamei duas funções a "excluirAluno()" que me retorna a matricula que uso na "excluirNotas()".

 void Menu::menuAluno() {

    Principal principal;

    int op = 0;
    int numMatricula = 0;

    do {
        cout << endl;
        principal.alinhaTexto("Escolha a opção desejada:\n\n", 8, 240);
        principal.alinhaTexto("1. Cadastrar  \n\n", 10);
        principal.alinhaTexto("2. Alterar    \n\n", 10);
        principal.alinhaTexto("3. Excluir    \n\n", 10);
        principal.alinhaTexto("4. Listar     \n\n", 10);
        principal.alinhaTexto("5. Voltar     \n\n", 10);
        principal.alinhaTexto("Opção: ", 10);
        cin >> op;
        system("cls");
        switch(op) {
            case 1:
                cadAlunos.cadastrarAlunos();
            break;
            case 2:
                cadAlunos.alterarAlunos();
            break;
            case 3:
                numMatricula = cadAlunos.excluirAlunos();
                cadNotas.excluirNotas(numMatricula);
            break;
            case 4:
                cadAlunos.listarAlunos();
            break;
            case 5:
                //Voltar
            break;
        }
    } while(op!= 5);
}

Obrigado.

Editado por FabricioAC
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...