Universidade Federal de Campina Grande
Centro de Engenharia Elétrica e Informática
Departamento de Sistemas e Computação
Disciplina: Técnicas de Programação
Prof.: José Eustáquio Rangel de Queiroz
GUIA DE LABORATÓRIO 01 – MÓDULO I
SEMESTRE 2013-1
DATA: / /2013 (TURMA 01)
Matrícula
Nome
Nota
1. Objetivo Geral
Os experimentos contidos neste guia de laboratório têm como objetivo o estudo dos tipos
estruturados struct, union e enum.
2. Experimento 1
Crie um programa que permita armazenar o nome, data de nascimento e a altura de até
10 pessoas. Cada pessoa deve ser representada por uma struct dentro de um vetor. A
data de nascimento também deve ser uma struct. O nome e o telefone de cada pessoa
devem ser informados pelo teclado. A geração da data de nascimento deve ser feita
aleatoriamente a partir da função a seguir.
void CriaData(Data &D)
{
D.Mes = 1 + (rand() % 12);
D.Ano = 1950 + (rand() % 49);
D.Dia = 1 + (rand() % 30);
}
O programa deverá apresentar, na tela de abertura, opções para:
i. Inserir um nome;
ii. Listar todos os nomes e respectivos telefones;
iii. Listar os nomes das pessoas que nasceram antes de certa data fornecida.
Obs.: Cada uma destas opções deverá ser implementada em uma função específica.
Para realizar este experimento, utilize como base o trecho de código apresentado a seguir.
#include <iostream>
using namespace std;
struct {
int dia, mes, ano;
} Data;
struct {
char nome[30];
float altura ;
Data nascimento;
} Pessoa;
void criaData(Data &D)
{
D.mes = 1 + (rand() % 12);
D.ano = 1950 + (rand() % 49);
D.dia = 1 + (rand() % 30);
}
int main()
{
Pessoa povo[10];
Pessoa p;
int opcao, qtdPessoas = 0 ;
Data dia;
ImprimeTelaDeOpcoes();
do
{
opcao = EscolheOpcao();
if (opcao == 1)
{
LePessoaDeTeclado(p);
AdicionaPessoa(povo, p, qtdPessoas);
}
if (opcao == 2)
{
ImprimeTodasAsPessoas(povo, qtdPessoas);
}
if (opcao == 3)
{
LeDataDeTeclado(dia);
ImprimeMaisVelhos(povo, qtdPessoas, dia);
}
} while (opcao != 4);
}
3. Experimento 2
Crie um programa que simule um jogo de cartas denominado Pares. Este jogo consiste
em um baralho com 52 cartas do qual são retiradas cinco aleatoriamente e é verificado se
dentre as selecionadas existe somente um par. Utilize os conceitos de struct e enum na
realização deste experimento. A saída do programa deverá ser a listagem das cinco cartas
selecionadas, acompanhada da informação se houve ou não um par. Para realizar este
experimento, utilize como base o trecho de código apresentado a seguir.
#include<iostream>
using namespace std;
enum Valor {
dois=2, tres, quatro, cinco, seis, sete, oito, nove, dez, valete, dama, rei, as
};
enum Naipe {
Ouro, Copas, Espadas, Paus
};
struct Carta {
Valor v;
Naipe n;
};
struct Baralho {
Carta c[52];
};
4. Experimento 3
Crie um programa que funcione como um conversor de ângulos. Implemente um menu de
opções e utilize a union a seguir como base para o seu programa.
union angulo {
int graus;
float radianos;
};
5. Experimento 4
Seja um sistema destinado a controlar os dados de um condomínio de 40
apartamentos. Os dados de cada apartamento são armazenados em um vetor de
estruturas. O programa deve ter como base as estruturas a seguir.
struct {
char nome[30];
long int telefone ;
} Proprietario;
struct {
Proprietario Dono;
int num_apartamento;
float area ;
float valor_condominio;
int num_moradores;
} Apartamento;
Crie um menu para:
i.
Receber dados do Proprietario;
ii. Receber dados sobre o Apartamento;
iii. Escrever um bloco de instruções que receba a área total do condomínio e calcule para
cada apartamento o valor a ser pago no mês. Esse valor é proporcional à área do
apartamento. Supondo que obedeça a seguinte função: valor = área x 80.
iv. Fazer um bloco de instruções para imprimir os dados do apartamento que tem o maior
número de moradores. Em caso de haver mais de um, imprimir todos.
v. Escrever um bloco de instruções para sair do programa.
Bom trabalho!