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!
Download

Guia de Laboratorio 01 2013.1 T1