aed1-tp01-2012-01

5
Algoritmos e Estruturas de Dados I Primeiro Trabalho Prático 1) Uma sequencia de n números inteiros (cada número maior que zero) é dito ser M- alternado se a sequência é composta por M segmentos consecutivos: o primeiro segmento com 1 elemento, o segundo segmento com 2 elementos, e assim por diante, o M-ésimo segmento com M elementos. Além do mais, a sequência tem que satisfazer as seguintes condições: a) os elementos em um dado segmento têm que ser todos pares ou todos ímpares; b) se os elementos em um segmento são todos ímpares (pares), então os elementos do segmento seguinte tem que ser todos pares (ímpares). Escreva um programa que, dado um inteiro n > 1 e uma sequência de n inteiros positivos, verifique se a sequência é M-alternada (e imprima o valor de M), ou imprima a cadeia “NAO” se a sequência não for M-alternada. Exemplo: n = 10 seq = 12 3 7 2 10 4 5 13 5 11 resposta = 4 - - - n = 8 seq = 11 2 3 4 5 77 33 44 resposta = NAO 2) Os incas, que reinaram na região dos Andes durante vários séculos, construíram pirâmides de base quadrada em que a única forma de se atingir o topo era seguir em espiral pela borda, que acabava formando uma escada em espiral. Neste problema você deverá fazer um programa que recebe uma matriz quadrada A n x n de números inteiros e verifica se a matriz é inca, ou seja, se partindo do canto superior esquerdo da matriz, no sentido horário, em espiral, a posição seguinte na ordem é o inteiro consecutivo da posição anterior. Exemplo: A matriz abaixo é inca: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 Leia a dimensão da matriz, em seguida leia a matriz, e responda se a matriz lida é inca ou não. 3) Os alunos do último ano resolveram organizar uma quermesse para arrecadar fundos para a festa de formatura. A festa prometia ser um sucesso, pois o pai de um dos formandos, Teófilo, dono de uma loja de informática, decidiu doar um computador para ser sorteado entre os que comparecessem. Os alunos prepararam barracas de quentão, pipoca, doces, ensaiaram a quadrilha e colocaram à venda ingressos numerados sequencialmente a partir de um. O número do ingresso serviria para o sorteio do computador. Ficou acertado que Teófilo decidiria o método de sorteio; em princípio o sorteio seria, claro, computadorizado. O local escolhido para a festa foi o ginásio da escola. A entrada dos participantes foi pela porta principal, que possui uma roleta, onde passa uma pessoa por vez. Na entrada, um funcionário inseriu, em uma lista no computador da escola, o número do ingresso, na ordem de chegada dos participantes. Depois da entrada de todos os participantes, Teófilo começou

Upload: hugo-gustavo

Post on 15-Feb-2015

74 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AED1-TP01-2012-01

Algoritmos e Estruturas de Dados IPrimeiro Trabalho Prático

1) Uma sequencia de n números inteiros (cada número maior que zero) é dito ser M-alternado se a sequência é composta por M segmentos consecutivos: o primeiro segmento com 1 elemento, o segundo segmento com 2 elementos, e assim por diante, o M-ésimo segmento com M elementos. Além do mais, a sequência tem que satisfazer as seguintes condições: a) os elementos em um dado segmento têm que ser todos pares ou todos ímpares;b) se os elementos em um segmento são todos ímpares (pares), então os elementos

do segmento seguinte tem que ser todos pares (ímpares).Escreva um programa que, dado um inteiro n > 1 e uma sequência de n inteiros positivos, verifique se a sequência é M-alternada (e imprima o valor de M), ou imprima a cadeia “NAO” se a sequência não for M-alternada.Exemplo:n = 10seq = 12 3 7 2 10 4 5 13 5 11resposta = 4- - -n = 8seq = 11 2 3 4 5 77 33 44resposta = NAO

2) Os incas, que reinaram na região dos Andes durante vários séculos, construíram pirâmides de base quadrada em que a única forma de se atingir o topo era seguir em espiral pela borda, que acabava formando uma escada em espiral. Neste problema você deverá fazer um programa que recebe uma matriz quadrada An x n de números inteiros e verifica se a matriz é inca, ou seja, se partindo do canto superior esquerdo da matriz, no sentido horário, em espiral, a posição seguinte na ordem é o inteiro consecutivo da posição anterior. Exemplo: A matriz abaixo é inca:

1 2 3 4

12 13 14 5

11 16 15 6

10 9 8 7Leia a dimensão da matriz, em seguida leia a matriz, e responda se a matriz lida é inca ou não.

3) Os alunos do último ano resolveram organizar uma quermesse para arrecadar fundos para a festa de formatura. A festa prometia ser um sucesso, pois o pai de um dos formandos, Teófilo, dono de uma loja de informática, decidiu doar um computador para ser sorteado entre os que comparecessem. Os alunos prepararam barracas de quentão, pipoca, doces, ensaiaram a quadrilha e colocaram à venda ingressos numerados sequencialmente a partir de um. O número do ingresso serviria para o sorteio do computador. Ficou acertado que Teófilo decidiria o método de sorteio; em princípio o sorteio seria, claro, computadorizado. O local escolhido para a festa foi o ginásio da escola. A entrada dos participantes foi pela porta principal, que possui uma roleta, onde passa uma pessoa por vez. Na entrada, um funcionário inseriu, em uma lista no computador da escola, o número do ingresso, na ordem de chegada dos participantes. Depois da entrada de todos os participantes, Teófilo começou

Page 2: AED1-TP01-2012-01

a trabalhar no computador para preparar o sorteio. Verificando a lista de presentes, notou uma característica notável: havia apenas um caso, em toda a lista, em que o participante que possuia o ingresso numerado com i, havia sido a i-ésima pessoa a entrar no ginásio. Teófilo ficou tão encantado com a coincidência que decidiu que o sorteio não seria necessário: esta pessoa seria o ganhador do computador.

Conhecendo a lista de participantes, por ordem de chegada, sua tarefa é determinar o número do ingresso premiado, sabendo que o ganhador é o único participante que tem o número do ingresso igual à sua posição de entrada na festa.

Leia um número inteiro positivo N que indica o número de participantes da festa. Em seguida leia a sequência, em ordem de entrada, dos N ingressos das pessoas que participaram da festa.

Exemplo:

N = 10 seq = 9 8 6 1 5 4 3 2 10 7 resposta = 5

4) Suponha que no Brasil haja cédulas de R$ 100, R$ 50, R$ 20, R$ 10, R$ 5, R$ 2, e R$ 1. Dado um valor em reais sem centavos, determine o número de cada uma das notas necessário para totalizar esse valor, de modo a minimizar a quantidade de cédulas entregues. Por exemplo, se o cliente deseja retirar R$ 50,00, basta entregar uma única nota de cinquenta reais. Se o cliente deseja retirar R$ 72,00, é necessário entregar uma nota de R$ 50,00, uma nota de R$ 20,00 e uma nota de R$ 2,00.

5) Um quadrado mágico é uma matriz quadrada de ordem n, onde a soma dos números das linhas, das colunas e das diagonais é constante, sendo que nenhum destes números se repete. Sua tarefa é verificar se uma matriz quadrada de entrada é um quadrado mágico ou não.

6) Considere o seguinte algoritmo para gerar uma sequencia de números. Inicie com um inteiro n. Se n for par, gere o próximo número dividindo por dois. Se n for impar, gere o próximo número multiplicando por três e adicionando um. Repita este processo com o novo valor de n, terminando quando n=1. Por exemplo, a seguinte sequencia de números será gerada para n=22:

22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

É conjecturado (mas ainda não provado) que este algoritmo terminará com n=1 para todo inteiro n. A conjectura é mantida para todos os inteiros até 1milhão. Para uma entrada n, o comprimento da sequencia de n é o número de números gerados até (incluindo) o número 1. No exemplo acima, o comprimento da sequencia de 22 é 16. Dados quaisquer dois números i e j (i ≥ j) determine o comprimento de sequencia máximo entre todos os números entre i e j, inclusive. Por exemplo, para as entradas 1 e 10, a resposta deve ser 20. Para a entrada 100 e 200, a resposta deve ser 125. Para a entrada 201 e 210, a resposta deve ser 89. Para a entrada 900 e 1000, a resposta deve ser 174.

7) Jogo da Mina. O objetivo deste jogo é encontrar onde todas as minas estão localizadas dentro de um campo M x N. No campo, a mina é representada por um caractere “*” (asterisco), e cada campo seguro pelo caractere “.” (ponto). Para facilitar a vida do jogador, o jogo dá algumas dicas, ou seja, o jogo mostra um número em um quadrado que diz quantas minas existem adjacentes a este quadrado. Sabemos que cada quadrado tem no máximo 8 quadrados adjacentes. Ler os dois inteiros n e m, em seguida ler n linhas de m caracteres (especificação da mina) e produzir as dicas descritas acima.

Page 3: AED1-TP01-2012-01

Exemplo de entrada3 5**...…...*....

Exemplo de saída**100332001*100

8) Um grupo de estudantes são membros de um clube que viaja anualmente para diferentes locais. Seus locais no passado incluíram Porto de Galinhas, Maceió, Fortaleza, Salvador, Natal e Lençois Maranhenses. Este verão eles estão planejando viajar para Fernando de Noronha. O grupo concorda em dividir as despesas de forma iqualitária, mas não é prático compartilhar todas as despesas quando estas ocorrem. Assim, certos indivíduos pagam por coisas em particular, tais como, alimentos, hotéis, carros, etc. Após a viagem, as despesas de cada estudante são contabilizadas e dinheiro é trocado de tal forma que o custo de cada seja o mesmo. Admite-se um erro de até 1 centavo. No passado, esta troca de dinheiro foi uma atividade tediosa, consumiu muito tempo, além de ser susceptível a erros. Seu trabalho é computar, de uma lista de despesas, o número mínimo de dinheiro que deve “trocar de mãos” a fim de equalizar (com 1 centado de erro) todos os custos dos estudantes. A entrada consistirá de um número n, denotando o número de estudantes dna viagem, seguido por n linhas, contendo a quantidade de despesas por um estudante. A saída deve ser a quantidade total de dinheiro que deve ser trocada.

Exemplo de entrada:310.0020.0030.00

Exemplo de saída:10.00

Exemplo de entrada:415.0015.013.003.01

Exemplo de saída:12.00

9) Display de LCD. Um amigo nosso acabou de comprar um computador novo. Antes disso, a máquina mais poderosa que ele tinha usado era uma calculadora de bolso. Ele ficou um pouco desapontado porque ele gosta mais do display de LCD do que da tela do seu computador. Para fazê-lo feliz, escreva um programa que imprima números no formato de display de LCD. A primeira entrada deve ser o tamanho no qual os caracteres devem ser impressos (restrito de 1 até 3); o segunda entrada são os números a serem impressos.

Page 4: AED1-TP01-2012-01

Exemplo de entrada:2 12345

Exemplo de saída:      ­­  ­­        ­­   |    |   | |  | |   |    |   | |  | |      ­­  ­­   ­­   ­­   | |      |    |    |   | |      |    |    |      ­­  ­­        ­­

Exemplo de entrada:1 12345

Exemplo de saída:     ­   ­       ­  |   |   | | | |     ­   ­   ­   ­  | |     |   |   |     ­   ­       ­

10) Editor gráfico. Editores gráficos tais como Photoshop permite-nos alterar imagens bit-maps da mesma forma que editores de texto permitem-nos alterar documentos. Imagens são representadas como uma matriz M x N de pixels, onde cada pixel tem uma dada cor. Sua tarefa é escrever um programa que simule um simples interativo editor gráfico. A entrada consiste de uma sequencia de comandos do editor, um por linha. Cada comando eé representado por um caractere maíusculo colocado como primeiro caractere na linha. Se o comando precisar de parâmetros, eles serão dados na mesma linha separados por um espaço em branco. As coordenadas dos pixels são representadas por dois inteiros, uma coluna de 1 até M, e uma linha de 1 até N, onde 1 ≤ M,N ≥ 250. A origem situa-se no canto superior esquerdo da matriz. O editor aceita os seguintes comandos:

I M N Cria uma nova iamgem M x N com todos os pixels inicialmente coloridos com branco (0).

C Limpa a tabela setando todos os pixels para branco (0). O tamanho permanece o mesmo.

L X Y C Colore o pixel (X,Y) com a cor C.

V X Y1 Y2 C Desenha um segmento vertical com a cor C na coluna X, entre as linhas Y1 e Y2 (inclusive).

H X1 X2 Y C Desenha um segmento horizontal com a cor C, na linha Y, entre as colunas X1 e X2 (inclusive).

K X1 Y1 X2 Y2 C Desenha uma retângulo preenchido com a cor C, onde (X1, Y1) é o canto superior esquerdo, e (X2, Y2) é o canto inferior direito.

F X Y C Preenche a região R com a cor C, onde R é definido como segue. Pixel (X,Y) pertence a R. Qualquer outro pixel com a mesma cor que pixel (X,Y) e compartilha um lado

Page 5: AED1-TP01-2012-01

comum com qualquer pixel de R também pertence a essa região.

S Name Escreve o conteúdo da imagem atual no arquivo Name.

X Termina a sessão.

Em cada comando S NAME, escreva o nome NAME e o conteúdo da imagem atual. Cada linha é representada pela cor de cada pixel. Ignore a linha inteira de qualquer comando definido por caracteres que não sejam I, C, L, V, H, K, F, S, or X, e passe para o próximo comando. Em caso de outros erros, o comportamento será imprevisível.

Exemplo de entrada:I 5 6L 2 3 AS one.bmpG 2 3 JF 3 3 JV 2 3 4 WH 3 4 2 ZS two.bmpX

Exemplo de saída:one.bmpOOOOOOOOOOOAOOOOOOOOOOOOOOOOOOtwo.bmpJJJJJJJZZJJWJJJJWJJJJJJJJJJJJJ

Este trabalho pode ser feito em DUPLAS.Data de Entrega: Na semana seguinte ao retorno das aulas pós-greve.Em todas as questões faça um programa na linguagem C.