![]() |
António Roberto Software |
|
Linguagens
de Programação I
|
2º
ano da Licenciatura em Informática de Gestão
|
Frequência de 13 de Dezembro de 2000
Escola Superior de Gestão de Santarém
Frequência de Linguagens de Programação I
13/Dezembro/2000 Duração: 2h Professor : António Roberto
I Parte
Considere a seguinte declaração da classe cAposta ( de totoloto ) :
class cAposta
{
int *pAp;
public :
cAposta ();
};
Tenha em conta a implementação do construtor :
cAposta::cAposta()
{
pAp = ( int *) malloc( sizeof( int ) * 6 );
// … geração de números aleatórios
}
Considere o seguinte código cliente de cAposta comentado com as questões a que deve responder :
void main()
{
cAposta ap1, ap2;
// a) Desenhe os objectos ap1 e ap2.
// b) Declare e implemente o operador ==
if ( ap1 == ap2 )
cout << "As apostas são iguais " << endl;
else
cout << "As apostas não são iguais " << endl;
// c) Desenhe os objectos ap1 e ap2 após a execução da atribuição. Identifique o problema existente.
Declare e implemente a solução para o problema
ap1 = ap2;
// d) Declare e implemente o destrutor
}
II Parte
( Tenha presente o quebra-cabeças dos missionários e canibais. )
Considere a declaração da classe cMargem :
class cMargem
{
int Missionarios;
int Canibais;
public:
cMargem( int Miss, int Can);
void AlteraNrMissionarios( int Variacao );
void AlteraNrCanibais( int Variacao );
};
Considere a definição do construtor :
cMargem::cMargem( int Miss, int Can)
{
Missionarios = Miss;
Canibais = Can;
}
Considere a declaração da classe cRio :
class cRio
{
cMargem Esquerda, Direita;
public:
cRio( int MissEsq, int CanEsq, int MissDir, int CanDir );
cMargem *OutraMargem( cMargem *pMargem );
friend class cBarco;
};
Considere a declaração da classe cBarco :
class cBarco
{
cMargem *pMargem; // ponteiro para a Margem onde está o barco
cRio *pRio; // ponteiro para o Rio onde está o barco
public :
cBarco( cRio *pR );
void Viagem( int NrMiss, int NrCan );
};
Considere a definição do construtor :
cBarco::cBarco( cRio *pR )
{
pMargem = &( pR->Esquerda );
pRio = pR;
}
Considere o seguinte código cliente :
void main()
{
cRio Rio( 3,3,0,0);
cBarco Barco( &Rio );
// …
}
III Parte
Considere a declaração ( incompleta ) da classe cConjunto :
class cConjunto
{
public:
int NrElementos;
void Adicionar( int e ); // adiciona o numero "e"
void Remover( int e ); // remove o numero "e"
int Elemento( int idx ); // retorna o elemento índice idx
bool ExisteElemento( int e ); // Existe o numero "e" no conjunto ?
};
Considere o seguinte código cliente :
void main()
{
cConjunto A, B, C, D;
// ...
C = A.Uniao(B);
D = A.Interseccao(B);
}