• Nenhum resultado encontrado

Considerações: 1) Coletânea de Músicas

N/A
N/A
Protected

Academic year: 2021

Share "Considerações: 1) Coletânea de Músicas"

Copied!
13
0
0

Texto

(1)

Universidade Federal de Pernambuco

Centro de Informática

Lista 5 – Introdução a Programação

Prof: Adriano Sarmento

Data: 2/08/13

Data de entrega: 14/08/13

Considerações:

● Leia a lista toda, o quanto antes, para evitar más interpretações e muitas dúvidas em

cima da hora

● Envie uma prévia da lista, pelo menos um dia antes da data final da entrega, para o caso de acontecer algum imprevisto

● A lista é para ser feita individualmente. Qualquer tentativa de cópia acarretará o zeramento da lista de todos os envolvidos

● Não é permitido o uso da biblioteca conio.h. ● Você está livre para utilizar a biblioteca string.h.

● Em caso de dúvida, envie email para duvidasip@googlegroups.com.

● Evite utilizar variáveis globais, exit, returns no meio do código e o uso de break nas estruturas de repetição, pois pode acarretar diminuição na nota por motivos já

explicados em sala de aula / monitoria.

● Em todas as questões, crie uma função construtora para cada estrutura, passando os valores iniciais como argumento.

1) Coletânea de Músicas

O monitor Eduardo, grande fanático por música, está precisando de ajuda para organizar sua gigantesca coleção de álbuns. Ele prometeu ser bonzinho nas correções de listas futuras para quem fizer um programa que o ajude nesse trabalho.

Para tanto, comece criando um tipo estruturado CD, que deverá conter o nome do álbum, o nome do artista ou banda, o ano de lançamento e o gênero(R-rock, C-Clássica, M-MPB e O-outras).

O programa deverá ter três opções: 1. Adicionar CD

2. Listar CD por gênero 3. Lista CD por Artista

Quando listando os CD’s por gênero, imprima no seguinte formato “Nome Do Álbum -Artista (ano)”. Se não houver nenhum álbum para o gênero, imprima “Nenhum álbum do gênero”. Se o artista não for encontrado, imprima “Artista não encontrado”.

Armazene a coleção de CD’s de Eduardo em um vetor dinâmico de CD’s (não é um vetor de ponteiros).

(2)

Entrada:

1 //Opção do Menu Nome: Metallica

Álbum: Death Magnetic Ano de Lançamento: 2008 Gênero: O

1//Opção do Menu Nome: The Doors Álbum: L.A. Woman Ano de Lançamento: 1971 Gênero: R

1//Opção do Menu Nome: Michael Jackson Álbum: Thriller

Ano de Lançamento: 1982 Gênero: O

1//Opção do Menu Nome: Metallica

Álbum: Metallica (The Black Album) Ano de Lançamento: 1991

Gênero: O

2//Opção do Menu

R

Saída:

The Doors - L.A. Woman (1971) Entrada:

3//Opção do Menu “Metallica”

Saída:

Death Magnetic

(3)

2) Simulador de Cirurgia

Foi pedido aos alunos do CIn que criassem um simulador de cirurgias!

A tarefa é simples, permitir que o usuário do programa trate o paciente de acordo com o problema que

ele tiver, para isso, é necessário saber que todo paciente no centro cirúrgico é descrito da seguinte

forma:

- nome

- idade (inteiro 0 - 100)

- altura (inteiro 130 – 270 dado em centímetros)

- peso (inteiro 40 – 120 dado em Kg)

- nível sanguíneo (0 - 100)

- tipo sanguíneo (A, AB , B ou O)

- freqüência cardíaca (inteiro 50 - 200)

O simulador tratará um dia de atendimento de um centro cirúrgico, portanto, no início será dito

quantos pacientes vão ser atendidos no dia e serão cadastrados todos seus dados na ordem indicada

acima. Em seguida, cada paciente será atendido e durante a cirurgia, alguns sinais devem ser avaliados

para evitar a morte do paciente.

● Se o nível sanguíneo estiver abaixo de 20 unidades, o paciente morre.

● Se o tipo sanguíneo aplicado ao paciente não for compatível com o dele, ele morre.

● Se a freqüência cardíaca chegar abaixo de 50 unidades ou acima de 200, o paciente tem uma

parada cardíaca. (Note que os pacientes já podem chegar em situação de parada cardíaca, ou

mortos).

Para tratar cada paciente (segundo momento) existem as seguintes funções:

- APBS X (aplicar bolsa de sangue tipo X, onde X pode ser A, B , AB ou O)

E essa função enche o nível sanguíneo de 20 unidades.

- COP (corte no órgão problemático diminui o nível de sangue em 15 unidades e diminui a freqüência

cardíaca em 25 unidades)

- AG D (anestesia geral com dose D, onde D é um inteiro dado pela seguinte expressão:

(altura*peso) – 10 < D < (altura*peso) + 10 ) Aumenta a freqüência cardíaca em (idade/2) unidades, e

deve ser aplicado no inicio do tratamento e com a dose certa senão o paciente morre.

qualquer dúvida sobre os tipos sanguíneos, veja essa imágem:

http://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Blood_Compatibility.svg/559px-Blood_C

ompatibility.svg.png

(4)

Em caso de parada cardíaca, apenas uma função é possível ser realizada:

- DES F (desfibrilador com frequência F, onde F é a freqüência do choque aplicado ao paciente e F

deve ser um inteiro e igual a ( (freqüência cardíaca*2) / idade) unidades)

Caso não seja esse valor deve ser avisado que o paciente em tratamento morreu.

Se a desfibrilação for correta (freqüência usada for correta) o paciente fica com sua freqüência

cardíaca em 150 unidades.

O paciente estará curado se o seu nível sanguíneo for maior ou igual a 100 e se a função COP

foi executada. (não se esqueça que o usuário tem que começar com a anestesia, caso contrário o

paciente morre)

Em caso de morte ou salvamento, deve-se tratar o próximo paciente, até que todos tenham

sido atendidos. Deve-se indicar tudo que está acontecendo com o paciente de acordo com a função

aplicada pelo cirurgião.

Entrada: (1ª rodada – descrever os pacientes)

2

(numero de pacientes)

Ronald Dener

(nome do paciente 1)

20

(idade)

175

(altura em cm)

73

(peso em Kg)

37

(Nivel Sanguineo)

O

(tipo Sanguineo)

120

(freqüência cardíaca)

Adriano Sarmento

40

170

80

53

A

190

(2ª rodada – tratar os paciente)

(referente a Dener)

Entrada:

APBS O

Saída:

(5)

(referente a Adriano)

Entrada:

AG 13601

Saída:

O paciente Adriano Sarmento esta anestesiado e com frequencia cardiaca 210

O paciente Adriano Sarmento teve uma parada cardíaca.

Entrada:

DES 9

Saída:

O paciente Adriano Sarmento esta vivo e com frequencia cardiaca 150

Entrada:

APBS A

Saída:

O paciente Adriano Sarmento esta com o nivel sanguineo 73.

Entrada:

APBS O

Saída:

O paciente Adriano Sarmento esta com o nivel sanguineo 93.

Entrada:

COP

Saída:

O paciente Adriano Sarmento esta com o nivel sanguineo 78 e frequencia cardíaca 125.

Entrada:

APBS O

Saída:

O paciente Adriano Sarmento esta com o nivel sanguineo 98.

Entrada:

APBS O

Saída:

(6)

3) Super Trunfo

Super Trunfo é uma famosa franquia de jogos de baralho, na qual os jogadores disputam com cartas que possuem informações sobre objetos ou criaturas. Escolhe-se uma das informações das cartas para ser comparada. O jogador dono da carta com o maior valor da informação escolhida ganha, e fica com as duas cartas.

A empresa responsável pelo jogo estava perdendo muito tempo criando o baralho, então pediu para você, aluno de EC, criar um gerador de Super Trunfo que seja jogável.

As cartas são divididas em 8 grupos (1 ~ 8) que possuem 4 Cartas (A, B, C, D) cada, sendo uma delas o Super Trunfo, carta que ganha de todas as outras, com exceção das cartas A’s. As cartas A são as únicas que ganham do Super Trunfo imediatamente. A cada Super Trunfo deve ser destacada, e deve ter esse nome exibido quando escolhida.

Primeiramente, gere o Deck de 32 Cartas, sendo uma delas o Super Trunfo (esta não poderá ser uma carta A).

Depois, distribua todas as cartas para 2 jogadores. As cartas devem ser passadas por referência para os jogadores, que terão um vetor de ponteiros para cartas.

A primeira carta do jogador 1 aparece na tela e ele escolhe qual característica quer comparar. Após a seleção, a carta do adversário aparece na tela e as 2 cartas vão para o final do vetor do jogador que ganhou. A próxima carta a aparecer será a primeira carta de quem ganhou. Ganha quem ficar com todas as cartas.

Caso aconteça um empate, as 2 cartas vão para a mesa e a próxima carta dos 2 jogadores serão comparadas na mesma característica, até que um dos jogadores ganhe a comparação e leve todas as cartas que ficaram na mesa. Caso um jogador fique sem cartas nessa comparação, é ultima carta dele que será comparada.

O tema será Filmes, e o formato das cartas é o descrito a seguir: Código (numero do Grupo + Letra da Carta)

1ª Característica - Quatidade de Oscars (0 ~ 15)

2ª Característica - Bilheteria (50 ~ 2000 milhões de dólares) 3ª Característica - Duração (40 ~ 300 min)

Ex:

3C - Super Trunfo Oscars: 4

Bilheteria: $ 1234 milhões Duracao: 120 min

OBS: Os jogadores e as cartas deverão ser representados por tipos estruturados. Cada jogador deve ter pelo menos um ponteiro para as cartas, e as cartas devem ter pelo menos os campos contendo os valores de suas informações.

(7)

Exemplo Entrada:

Jogador A escolhe a característica: Bilheteria

(Note que o jogador escolhe a característica a ser comparada! Mostre ao jogador a carta do topo que ele tem)

Saída

Valor do Jogador A: 250 Milhões Valor do Jogador B: 225 Milhões

Jogador A vence! (ficando com as 2 cartas)

4) CInphone

O Cin, em conjunto com o CITI, está prestes a lançar seu primeiro smartphone, e sabendo

o quão competitivo está o mercado hoje dominado pela Samsung e Apple, devemos

impressionar o publico em seu anúncio oficial. Então, sua tarefa é desenvolver um

preview do aplicativo de agenda de contatos do CInphone. Para isso existem alguns

padrões de estruturação a serem seguidos.

Deverá haver 3 tipos estruturados:

-Numero: que deverá contar com uma variável para um numero (8 digitos), uma variavel

pra o DDD (2 digitos) e uma variável para o local (até 128 caracteres).

-Contato: que devera contar com uma variavel pro nome do contato, um vetor de

ponteiros pra numero com 3 posições, e uma variavel pro email do contato.

-Celular: que deverá contar com um vetor de 10 posições de ponteiros pra Contato, um

inteiro pro DDD LOCAL, e um inteiro pra senha.

As funcionalidades do CInphone são:

1. Novo contato:

que adiciona um novo contato na agenda do celular.

-A quantidade de números a ser inserido por contato deverá ser algo perguntado

ao usuário.

-Não é permitido contatos com o mesmo nome;

2. Mostrar Lista:

(8)

(DDD), locais, ou não locais.

3. Buscar contato:

que busca um contato no CInphone, e caso o encontre exibe todas as suas

informações.

Caso contrário uma mensagem de que o contato não foi encontrado deverá ser

exibida.

4. Excluir contato:

que exclui um contato da agenda.

5. Excluir agenda:

que exclui todos os contatos da agenda.

6. Primeiro uso:

que prepara o Cinphone pra o primeiro uso... pede a senha, o DDD Local e

inicializa o aparelho com a tela de bloqueio;

7. Bloquear tela.

8. Desligar CInphone.

O CInphone conta com uma senha de segurança de 4 digitos.

CInphone com a tela bloqueada: Deverá ser exibido um conjunto de estatísticas:

Quantidade total de números, quantidade total de contatos, quantidade de números locais

e quantidade de números não locais. E a senha poderá ser digitada pra desbloquea-lo.

(9)
(10)

5) Poker da Área 2

Um baralho tradicional contém 52 cartas, sendo elas divididas em 4 grupos, chamados de NAIPES. Os naipes são identificados por nomes e símbolos, são eles: Copas, Ouro, Paus e Espadas (♥,♦,♣,♠ ou H, D, C, S respectivamente).

No poker, o naipes possuem o mesmo valor, ou seja, nenhum naipe é superior ao outro. Cada naipe possui 13 cartas, sendo elas: 2, 3, 4, 5, 6, 7, 8, 9, 10, Valete, Dama, Rei e Às (2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K, A respectivamente). Uma carta é formada por um valor (número / letra) e um naipe. Exemplo: 3D, 3H, KC, AS.

Cansados de reprovar cadeiras da Área II por falta, alguns do alunos do CTG vieram até você para pedir que você faça um programa em C para que eles possam jogar poker em um notebook durante as aulas. Você, que é um aluno exemplar, decidiu não ser conivente com esse comportamento, mas decidiu implementar o jogo para testar suas habilidades de programação.

Veja as combinações do Poker aqui: https://en.wikipedia.org/wiki/List_of_poker_hands

Straight flush

Four of a kind

(11)

Flush

Straight

Three of a kind

Two pair

(12)

High card

O programa deverá começar recebendo a quantidade de jogadores (2~5) e os nomes deles (de até 15 caracteres) e então distribua as cartas do Deck aleatoriamente entre essas pessoas (5 cartas por jogador). Cada jogador terá um vetor de ponteiros para as cartas, que serão removidas do vetor de ponteiros do Deck (o programa fechará quando o número de jogadores for 0).

Deve-se então mostrar a mão do primeiro jogador e dar a opção para ele trocar ATÉ 4 cartas. Após escolher a quantidade, ele então escolherá quais serão essas cartas e as

descartará SIMULTANEAMENTE, puxando então do deck um número de cartas igual ao número de cartas descartadas. As cartas removidas voltarão para o fim do Deck. O mesmo

procedimento ocorrerá para todos os outros jogadore.

Após todos terem escolhido descartar ou não alguma carta, você então irá mostrar todas as mãos na ordem de vitória (com o nome dos jogadores do lado), então as cartas dos jogadores VOLTAM para o Deck e programa recomeçará.

OBS 1: as cartas e os jogadores DEVERÃO ser estruturas, os jogadores estarão num vetor de estruturas, e o Deck será um vetor de ponteiros.

OBS 2: ordene as cartas das mãos usando o valor da carta (2~A) e, caso tenha 2 cartas com o mesmo valor, ordene essas pelo naipe (Copas, Ouro, Paus, Espada)

ex: 2C, 4H, 4S, 7C, JS ou 2♣, 4♥, 4♠, 7♣, J♠

OBS 3: nas sequências (flush), o A pode ser o anterior ao 2 (A,2,3,4,5) ou o sucessor do K (T,J,Q,K,A)

OBS 4: só passe referências, não o valor das cartas, não se pode duplicar cartas, e a única situação na qual a carta pode estar sendo apontada por uma mão e pelo deck ao mesmo tempo, é na hora de transferir a carta entre eles (o deck só pode ter cartas que não estão com nenhum dos jogadores).

DICA: A tabela ASCII possui os símbolos dos naipes (♥,♦,♣,♠), eles são os valores entre 3 e 6 inclusive. Você pode usar os símbolos ou as letras iniciais do nome em inglês (H,D,C,S)

(13)

DICA 2: na estrutura do Jogador, ordene a mão do jogador e guarde a situação da mão dele (Dupla, Trio, Flush...) para poder ordenar os jogadores na hora de falar quem ganhou. DICA 3: usar ENUMs pode se tornar bem útil nessa questão.

ex:

4 // Número de jogadores

//essa etapa é repetida para cada jogador: Jogador 1:

2♣, 4♥, 4♠, 7♣, J♠

quantas cartas você quer descartar? (0~4 cartas)

2

quais as cartas?

1 4 //a primeira e a 4ª carta Cartas trocadas:

3♦, 4♥, 4♠, J♣, J♠

// depois de todos os jogadores descartarem: O Jogador 2 Venceu!

Jogador 2 - 2♠, 3♠, 5♠, K♠, A♠ //flush Jogador 4 - A♣, 2♣, 3♣, 4♣, 5♣ //Straight Jogador 3 - 2♦, 7♥, 7♦, 7♣, Q♥ //Tree of a Kind Jogador 1 - 3♦, 4♥, 4♠, J♣, J♠ //Two Pair

Referências

Documentos relacionados

destacar que além de fazer parte de um projeto de extensão e do programa do governo Museu da Escola, este trabalho de “tirar os documentos do silêncio e

Um gráfico pode valer mais que mil palavras mas pode exigir milhares de palavras para construí-lo. Obter a direção da

És orgulho do Brasil Nossa amada Maringá O teu vulto traduz a mensagem De um passado coberto de glória Arrancado à floresta selvagem Para eterno viver na história Um poema de luz para

Para isto 5 lotes de sementes de milho da cultivar Soma Vip, foram submetidos, aos seguintes testes: Germinação papel, Germinação em canteiro com contagens ao 5º, 7º

Considerado o prazo de 180 (cento e oitenta) dias para entrada em vigor da lei anticorrupção brasileira (Lei federal nº 12.486/13), tanto as empresas privadas como todos os entes

Resumo – O objetivo deste trabalho foi avaliar o efeito dos danos causados por Azochis gripusalis Walker, 1859 (Lepidoptera: Pyralidae) na produção da figueira (Ficus carica L.) e

Desafio do Setor Implementar ações que melhorem o êxito do estudante Situação atual (hoje): Participação expontanea dos alunos em ações de pesquisa Situação desejada

3.5 Classificação da pesquisa com base nos procedimentos técnicos utilizados: pesquisa bibliográfica, pesquisa documental, pesquisa experimental,