Ir ao conteúdo
  • Cadastre-se
gabrielleletice

construtores, vetores e destrutor

Recommended Posts

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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aluno aluno[3];

aluno[0].nome = "Orlando";

aluno[0].nota1 = 10;
aluno[0].nota2 = 10;
aluno[0].media = (nota1+nota2)/2;
aluno[1].nome = "Maria";
....

Algo assim?

  • Curtir 1

Compartilhar este post


Link para o post
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

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

×