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!