Buscar

EXERCÍCIO DE FIXAÇÃO 01 2017.1T1&T2

Prévia do material em texto

Universidade Federal de Campina Grande 
Departamento de Sistemas e Computação 
Disciplina: Técnicas de Programação 
Prof.: José Eustáquio Rangel de Queiroz 
EXERCÍCIO DE FIXAÇÃO 01 (LINGUAGENS C/C++) 
TURMAS 01 & 02 DATA: 26/05/2017 
 
 
 
 
 
 
1. Implementar e testar uma struct que possibilite o armazenamento de datas, em 
formato dd, mm e aaaa. 
 
Detalhe de implementação: 
 
 Os dados digitados pelo usuário, referentes à data de seu interesse, deverão ser 
validados, antes de serem armazenados em um arquivo denominado datas.txt ou 
datas.dat. 
 
2. Implementar um programa para gerenciar uma base de dados contendo as seguintes 
informações, relativas aos alunos da turma de Técnicas de Programação: (i) nome; (ii) 
número de matrícula; (iii) notas dos estágios; (iv) nota da prova final; e (v) média final. O 
programa deverá oferecer ao usuário facilidades para: (i) Cadastrar alunos; (ii) 
Atualizar dados; (iii) Remover alunos; e (iv) Listar alunos e respectivas notas. 
 
Detalhes de implementação: 
 
 Os dados deverão ser armazenados em um arquivo denominado notas.txt ou 
notas.dat; e 
 
 Sugere-se o emprego dos comandos file.read(char*, streamsize) e 
file.write(char*, streamsize), assim como a utilização da conversão de tipos nos 
atributos da estrutura para char*, visando-se à manipulação dos dados do arquivo 
notas.txt (ou notas.dat). 
 
3. Implementar, a partir de enums, um programa que possibilite verificar se um dado 
mês indicado pelo usuário cairá no primeiro ou no segundo semestre do ano. O 
programa deverá solicitar ao usuário o número do mês e retornar a mensagem “XXXX 
pertence ao primeiro semestre do ano.”, para os meses janeiro a junho ou “XXXX pertence 
ao primeiro semestre do ano.”, para os demais meses. 
 [XXXX corresponde ao nome do mês (Janeiro, ..., Dezembro).] 
 
4. Dado o código a seguir: 
 
#include <iostream> 
 
using namespace std; 
 
class Disjuntor{ 
 enum EstadoAtual {ligado, desligado}; 
 EstadoAtual estado; 
 
 public: 
 Disjuntor(){ // construtor default 
 estado = desligado; 
 } 
 void exibeStatus(){ 
 if (estado == ligada)cout << "Disjuntor ligado" << endl; 
 else cout << "Disjuntor desligado" << endl; 
 } 
 void desliga() 
 { 
 estado = desligado; 
 } 
 void liga() 
 { 
 estado = ligado; 
 } 
}; 
 
int main() 
{ 
 Disjuntor d1; // cria um objeto da classe Disjuntor 
 
 d1.exibeStatus(); 
 d1.liga(); 
 d1.exibeStatus(); 
 d1.desliga(); 
 d1.exibeStatus(); 
 
} 
 
i. Modificar o trecho de código, acrescentando um método destrutor à classe 
Disjuntor, o qual deverá indicar que o objeto foi destruído ao final do processo. 
 
ii. Verificar e reportar o que ocorre se forem inseridas as seguintes linhas de código 
à função de teste da classe? 
Lampada d2[3]; 
d2[0].mostrar(); 
 
iii. Dotar os objetos da classe Disjuntor de um atributo tipo (unipolar, bipolar ou 
tripolar) que indicará o tipo de cada instância da classe e criar um novo 
construtor, a fim de que o tipo default de disjuntor seja unipolar. Alterar também 
a função exibeStatus, de modo que o tipo e o estado do disjuntor sejam exibidos 
ao usuário. 
 
iv. O que ocorrerá se a seguinte linha for inserida ao final da função de teste da 
classe? Por que? 
d1.tipo = bipolar; 
 
v. Criar um terceiro construtor para a classe Disjuntor, privado, o qual deverá 
receber como argumentos o tipo, a classe de isolamento (I, II ou III) e o 
estado do disjuntor; e 
 
vi. Testar toda a implementação e salvar os dados do teste em arquivo. 
 
 
 
BOM TRABALHO!

Continue navegando