Ir ao conteúdo
  • Cadastre-se

construtores, vetores e destrutor


Posts recomendados

olá, como poderia armazenar a nota de mais de um aluno em um vetor nessa classe ?

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;
// questao 2
class Aluno
{
public:
string nome;
int nota1,nota2;
float media;
};
void setValues(Aluno&);
void getValues(const Aluno&);
void setValues(Aluno& alu)
{
cout<< "Informe o nome do aluno: ";
getline(cin, alu.nome);
cout<< "Informe a primeira nota : ";
cin>> alu.nota1;
cin.ignore();
cout<< "Informe a segunda nota : ";
cin>> alu.nota2;
cin.ignore();
alu.media = (alu.nota1 + alu.nota2)/2;
}
void getValues(const Aluno&alu)
{
cout<< "Nome: " << alu.nome<< endl;

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@vangodp na verdade, eu estou interessada em criar 3 objetos da mesma classe, no caso, aluno, e poder destruir um caso eu queira

adicionado 2 minutos depois

@vangodp no caso, eu coloquei todos os alunos em só uma classe e se eu criasse um destrutor iria destruir toda a classe e não só um aluno como eu queria 

#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;
// questao 2
class Alunos
{
public:

string nome1;
string nome2;
string nome3;
int nota11,nota12,nota21,nota22,nota31,nota32;
float media1,media2,media3;
};
void setValues(Alunos&);
void getValues(const Alunos&);
void setValues(Alunos& alu)
{
cout<< "Informe o nome do aluno 1: ";
getline(cin, alu.nome1);
cout<< "Informe a primeira nota : ";
cin>> alu.nota11;
cin.ignore();
cout<< "Informe a segunda nota : ";
cin>> alu.nota12;
cin.ignore();
alu.media1 = (alu.nota11 + alu.nota12)/2;
cout<< "Informe o nome do aluno 2: ";
getline(cin, alu.nome2);
cout<< "Informe a primeira nota : ";
cin>> alu.nota21;
cin.ignore();
cout<< "Informe a segunda nota : ";
cin>> alu.nota22;
cin.ignore();
alu.media2 = (alu.nota21 + alu.nota22)/2;
cout<< "Informe o nome do aluno 3: ";
getline(cin, alu.nome3);
cout<< "Informe a primeira nota : ";
cin>> alu.nota31;
cin.ignore();
cout<< "Informe a segunda nota : ";
cin>> alu.nota32;
cin.ignore();
alu.media3 = (alu.nota31 + alu.nota32)/2;
}
void getValues(const Alunos&alu)
{
cout<< "Nome: " << alu.nome1<< endl;
cout<< "A media é: " << alu.media1<< endl;
}
int main()
{
Alunos a1;
setValues(a1);
cout<<endl;
cout<< "Informando dados sobre o aluno:\n";
cout<< "======================\n";
getValues(a1);
return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Sim ok, porém um array na pilha não pode ser destruído, talvez o melhor seria usar outros mecanismos como listas dinâmicas ou usar stl que seria melhor porém n4ao sei seu nivel em programação.
Imagine que um array é uma coisa de um tamanho fixo, algo como:
[aluno1][aluno2][aluno3]....

O caso é que você pode formatar um aluno, mas não borrar, algo como isso:
[aluno1][           ][aluno3]....

porém como podemos ver o espaço continua aí. O que poderia ser feito é passar os dados de aluno3 em cima de aluno2:
[aluno1][aluno3]<-[aluno3]....

E por ultimo formatar o aluno3 original:
[aluno1][aluno3][           ]....

Si tiver mais alunos seria repetir esse processo até que o espaço vazio fique no final, copiando o seguinte no anterior.

Outro sistema seria criar um vetor temporal copiar nele os dados, excluindo o/os dado/s que não lhe interesse, depois voltar a copiar ele no vetor original. Trata-se de tarefas de otimização do array.

Se por outro lado se não lhe importa que tenha espaço entre um aluno e outro no array, não seria necessário realizar os passos anteriores, bastaria com por uma variável tipo bool para saber se o espaço está livre ou não. Quando você quiser borrar o aluno ponha algo como bool livre = true dentro da classe, e quando for imprimir ou não leve em consideração alunos com livre = true, porém se for escrever um novo aluno deveria ser copiado em cima desse espaço.

 

  • Curtir 1
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...