MC102 - Algoritmos e Programação de Computadores
MC102 Horários Plano de
desenvolvimento
Cronograma Oferecimentos
anteriores

      .0.        .0000000.    .000000. 00000 00000         .0.       000000000.   00000000        
     .000.      .000'   000  .000  000  .00   .00         .000.       .00   000.  0 .00  0
    .00000.     .0000.      .000        .00   .00        .00000.      .00  '000.    .00
   .00  000.      .000.     .000        .00   .00       .00  000.     .0000000.     .00
  .000000000.       .0000.  .000        .00   .00      .000000000.    .00.00.       .00
 .00      000.  000   '000.  .000  000  .00   .00     .00      000.   .00   000.    .00
0000     000000  .0000000.    .000000. 00000 00000   0000     000000 00000  00000  00000
Desenhando polígonos

Submissões no período de 06 a 12 de julho só serão computadas para alun*s em recuperação de Média dos Laboratórios.


Nesta tarefa, vamos praticar o uso do comando repetitivo for e do método range() produzindo figuras geométricas simples com caracteres ASCII. Os desenhos irão variar de acordo com os polígonos escolhidos, os caracteres especificados e as dimensões indicadas. Leia as descrições e observe os exemplos abaixo.

Quadrado: Deve-se desenhar um quadrado a partir da medida, em número de caracteres, do lado deste objeto.

Quadrado
lado = 3 lado = 5 lado = 6
***
***
***
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
&&&&&&
&&&&&&
&&&&&&
&&&&&&
&&&&&&
&&&&&&

Triângulo: Deve-se desenhar um triângulo isósceles a partir da medida, em número de caracteres, da altura deste objeto. A primeira linha deve conter 1 caractere, a segunda 3 e assim por diante até que o valor altura * 2 - 1 seja atingido. O primeiro caractere deve estar centralizado com relação à base do triângulo.

Triângulo
altura = 3 altura = 5 altura = 6
  *
 ***
*****
    o
   ooo
  ooooo
 ooooooo
ooooooooo
     @
    @@@
   @@@@@
  @@@@@@@
 @@@@@@@@@
@@@@@@@@@@@

Losango: Deve-se desenhar um losango a partir da medida, em número de caracteres, do lado deste objeto. Note que a altura e a largura terão valor igual a 2 * lado - 1.

Losango
lado = 3 lado = 5 lado = 6
  *
 ***
*****
 ***
  *
    ?
   ???
  ?????
 ???????
?????????
 ???????
  ?????
   ???
    ?
     I
    III
   IIIII
  IIIIIII
 IIIIIIIII
IIIIIIIIIII
 IIIIIIIII
  IIIIIII
   IIIII
    III
     I

Hexágono: Deve-se desenhar um hexágono a partir da medida, em número de caracteres, do lado deste objeto. Note que a altura terá valor igual a 2 * lado - 1 e a largura será 3 * lado - 2.

Hexágono
lado = 3 lado = 4 lado = 5
  ***
 *****
*******
 *****
  ***
   ZZZZ
  ZZZZZZ
 ZZZZZZZZ
ZZZZZZZZZZ
 ZZZZZZZZ
  ZZZZZZ
   ZZZZ
    @@@@@
   @@@@@@@
  @@@@@@@@@
 @@@@@@@@@@@
@@@@@@@@@@@@@
 @@@@@@@@@@@
  @@@@@@@@@
   @@@@@@@
    @@@@@

Octógono: Deve-se desenhar um octógono a partir da medida, em número de caracteres, do lado deste objeto. Note que a altura e a largura terão valor igual a 3 * lado - 2.

Octógono
lado = 3 lado = 4 lado = 5
  ***
 *****
*******
*******
*******
 *****
  ***
   $$$$
  $$$$$$
 $$$$$$$$
$$$$$$$$$$
$$$$$$$$$$
$$$$$$$$$$
$$$$$$$$$$
 $$$$$$$$
  $$$$$$
   $$$$
    wwwww
   wwwwwww
  wwwwwwwww
 wwwwwwwwwww
wwwwwwwwwwwww
wwwwwwwwwwwww
wwwwwwwwwwwww
wwwwwwwwwwwww
wwwwwwwwwwwww
 wwwwwwwwwww
  wwwwwwwww
   wwwwwww
    wwwww

Descrição da entrada

Para todos os objetos serão indicados:

<tipo_do_objeto>
<caractere>
<dimensao>       

Os identificadores dos tipos dos objetos serão as seguintes:

Como explicado acima, para o triângulo a dimensão fornecida será a altura e para os demais polígonos a dimenão fornecida será a medida do lado. Exemplo:

H
*
4

Descrição da saída

A saída deverá conter o desenho solicitado, de acordo com os exemplos da primeira seção desta página. Adicionalmente, deverá ser feita uma validação dos valores da entrada. Caso a primeira linha não contenha o identificador de um dos objetos descritos acima deverá ser emitida a mensagem:

Identificador invalido.

O valor indicado para as dimensões dos objetos deverá ser um número maior ou igual a 3. Caso a dimensão fornecida não siga esta restrição deverá ser emitida a mensagem:

Dimensao invalida.

Caso haja mais de um erro na entrada, apenas a primeira mensagem deverá ser emitida. Ou seja, em caso de identificador inválido, não é necessário verificar o valor da dimensão.

Para a entrada descrita acima a saída será:

   ****
  ******
 ********
**********
 ********
  ******
   ****

Testes com o SuSy

Criamos um conjunto de testes com arquivos de entrada arq<i>.in e para cada um deles temos uma saída esperada arq<i>.res. Cada tipo de objeto será testado por pelo menos dois testes abertos e um teste fechado. Haverá um teste aberto com identificador inválido de objeto e outro com dimensão inválida. Consulte na tabela abaixo os dados dos testes abertos e algumas dicas para os testes fechados.

TesteObjetoCaractereDimensão
01Q*3
02QX10
03T*3
04T&8
05L*3
06Lo5
07L?12
08H*3
09H%4
10H@8
11O*3
12O#5
13O%7
14S*3
15H*0
16Q
17T
18L
19H5
20O5

Releia, se necessário, as instruções para fazer os testes em Testes com o SuSy.

Cuidado com os espaços em branco!!!!

Nenhum espaço em branco deve ser escrito à direita da figura, caso contrário o SuSy acusará um erro na comparação entre o resultado do seu programa e a saída esperada. Observe abaixo quais são os caracteres que devem ser escritos para o Hexágono de lado igual a 3 solicitado pelo teste 08.
  ***
 *****
*******
 *****
  ***

Dicas de Python 3 para esta tarefa:

Orientações para submissão

Veja aqui a página de submissão da tarefa. O arquivo a ser submetido deve se chamar lab07.py. No link Arquivos auxiliares há um arquivo aux07.zip que contém todos os arquivos de testes abertos e seus respectivos resultados compactados.

Utilize o sistema SuSy com o mesmo login e senha que você utiliza para fazer acesso ao sistema da DAC. Se você não estiver inscrito corretamente, envie email para .

O limite máximo será de 30 submissões. Serão considerados os resultados da última submissão.

O peso desta tarefa é 3.

O prazo final para submissão é 25/05/2020.

A nota desta tarefa é proporcional ao número de testes que executaram corretamente, desde que o código esteja coerente com o enunciado. Em particular, para esta tarefa, seu código deverá estar projetado para fazer os desenhos para um conjunto amplo de dimensões utilizando variáveis de controle do comando repetitivo for.

A submissão de um código que não implementa o algoritmo requisitado, mas que exibe as saídas esperadas dos testes abertos a partir da comparação de trechos da entrada será considerada fraude e acarretará a atribuição de nota zero à média final da disciplina.