Estou com dúvida de fazer o int main não estou conseguindo passar da classe para o programa principal. Alguém pode me ajudar? Segue abaixo o exercício e o código.
Exercício:
Um protozoário é um animal simples, porém completo. A partir do seu nascimento, cada protozoário tem um número ****** único, conhecido como individualidade, que nunca pode mudar e nunca poderá ser associado a outro protozoário. O genótipo de um protozoário é composto por 10 genes, sendo que cada um pode ter valores de 0 a 3. Um protozoário pode se reproduzir por replicação ou por cópula com outro protozoário*. Um protozoário nascido através da replicação de outro é uma cópia idêntica do pai, exceto por sua individualidade. Já se for gerado por cópula, receberá os genes randomicamente de cada indivíduo, com uma chance de 50% do gene vir de um ou de outro. De vez em quando (em 7% dos casos), pode haver mutação no genótipo, que altera um único gene no protozoário.
Modele a classe Protozoario, que deve possuir os seguintes métodos:
a) public Protozoario(): cria um protozoário com o genótipo [0,0,0,0,0,0,0,0,0,0];
B) public Protozoario(int[] genotipo): cria um protozoário com o genótipo fornecido;
c) public void mutate(): causa uma mutação no genótipo;
d) public Protozoario getClone(): retorna um novo protozoário criado por replicação;
e) public void print(): imprime uma representação do protozoário;
f) Permita que o usuário saiba quantos objetos protozoários estão em memória em um dado momento.
#ifndef PROTOZOARIOS_H
#define PROTOZOARIOS_H
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
const int MaxElementos = 512; // máximo de protozoários
// definicao dos genes
enum Gene
{
Adenina = 0, //aminoácidos reais representados de 0 a 3
Citosina = 1,
Guanina = 2,
Timina = 3
};
// classe Principal aqui
class Protozoario
{
private:
int Serial;
Gene Genotipo[10];
public:
Protozoario();
Protozoario(Gene genotipo[10]);
void mutate();
Protozoario getClone();
void print();
// criada por mim
Protozoario GetCopula(Protozoario Parceiro);
};
namespace RunTime
{
int LastSerial = 0;
int NovoSerial()
{
// se quiser randômico é só implementar, porém tome cuidado:
// cada serial é único
return ++LastSerial;
}
Gene NovoGene()
{
srand(time(NULL));
int select = rand() % 4;
switch(select)
{
case 0:
{
return Adenina; // uma aminoácido
}
break;
case 1:
{
return Citosina; // uma aminoácido
}
break;
case 2:
{
return Guanina; // uma aminoácido
}
break;
case 3:
{
return Timina; // uma aminoácido
}
break;
default:
{
return Adenina; // caso algum erro
}
break;
}
return Adenina; // impossível chegar aqui, mas está presete
}
// lista de ponteiros para os protozoários criados
Protozoario *Lista[MaxElementos];
} // RunTime namespace
// isso vai no .cpp
// #include "protozoario.h"
Protozoario::Protozoario()
{
this->Serial = RunTime::NovoSerial();
for(int n = 0; n != 10; n++)
{
this->Genotipo[n] = Adenina;
}
}
Protozoario::Protozoario(Gene genotipo[10])
{
this->Serial = RunTime::NovoSerial();
for(int n = 0; n != 10; n++)
{
this->Genotipo[n] = genotipo[n]; //cópia do genótipo como parâmetro
}
// 7% dos casos tem uma mutação
srand(time(NULL));
int esp = rand() % 100;
if(esp <= 7)
{
this->mutate();
}
}
Protozoario Protozoario::getClone()
{
Protozoario temp;
temp.Serial = RunTime::NovoSerial();
for(int n = 0; n != 10; n++)
{
temp.Genotipo[n] = this->Genotipo[n];
}
return temp;
}
// retorna um protozoário através de combinação
Protozoario Protozoario::GetCopula(Protozoario Parceiro)
{
Protozoario ret; // retorno
bool est = false;
srand(time(NULL));
ret.Serial = RunTime::NovoSerial();
// para os genes aleatórios
for(int n = 0; n != 10; n++)
{
est = rand() % 2; // idealiza a randomização de true ou false
if(est == true)
{
ret.Genotipo[n] = this->Genotipo[n];
}
else
{
ret.Genotipo[n] = Parceiro.Genotipo[n];
}
}
// 7% dos casos tem uma mutação
srand(time(NULL));
int esp = rand() % 100;
if(esp <= 7)
{
ret.mutate();
}
return ret;
}
void Protozoario::mutate()
{
srand(time(NULL));
int GeneAlvo = rand() % 10; // ponteiro-alvo para o gene que se modificará
Gene Antigo = this->Genotipo[GeneAlvo];
Gene Novo = RunTime::NovoGene();
while(Antigo == Novo)
{
Novo = RunTime::NovoGene();
}
this->Genotipo[GeneAlvo] = Novo;
return;
}
void Protozoario::print()
{
// expressão de saída:
// Protozoário
// Serial: 0
// Genotipo: 0120103012
printf_s("Protozoario:\nSerial: %i\nGenotipo: ", this->Serial);
for(int n = 0; n != 10; n++)
{
switch(this->Genotipo[n])
{
case Adenina:
{
printf_s("%i", 0);
}
break;
case Citosina:
{
printf_s("%i", 1);
}
break;
case Guanina:
{
printf_s("%i", 2);
}
break;
case Timina:
{
printf_s("%i", 3);
}
break;
default:
{
}
break;
}
}
printf_s("\n");
return;
}
#endif
Pergunta
isaiasbd
Estou com dúvida de fazer o int main não estou conseguindo passar da classe para o programa principal. Alguém pode me ajudar? Segue abaixo o exercício e o código.
Exercício:
Um protozoário é um animal simples, porém completo. A partir do seu nascimento, cada protozoário tem um número ****** único, conhecido como individualidade, que nunca pode mudar e nunca poderá ser associado a outro protozoário. O genótipo de um protozoário é composto por 10 genes, sendo que cada um pode ter valores de 0 a 3. Um protozoário pode se reproduzir por replicação ou por cópula com outro protozoário*. Um protozoário nascido através da replicação de outro é uma cópia idêntica do pai, exceto por sua individualidade. Já se for gerado por cópula, receberá os genes randomicamente de cada indivíduo, com uma chance de 50% do gene vir de um ou de outro. De vez em quando (em 7% dos casos), pode haver mutação no genótipo, que altera um único gene no protozoário.
Modele a classe Protozoario, que deve possuir os seguintes métodos:
a) public Protozoario(): cria um protozoário com o genótipo [0,0,0,0,0,0,0,0,0,0];
B) public Protozoario(int[] genotipo): cria um protozoário com o genótipo fornecido;
c) public void mutate(): causa uma mutação no genótipo;
d) public Protozoario getClone(): retorna um novo protozoário criado por replicação;
e) public void print(): imprime uma representação do protozoário;
f) Permita que o usuário saiba quantos objetos protozoários estão em memória em um dado momento.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
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.