MC102 - Algoritmos e Programação de Computadores
MC102 Horários Plano de
desenvolvimento
Plano de
aulas
Oferecimento
anterior

      .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 formas e padrões

Nesta tarefa, vamos praticar o uso do comando repetitivo for e do método range() produzindo figuras e padrões geométricos. Os desenhos irão variar de acordo com o objeto ou padrão a ser desenhado, o caractere ASCII especificado e as dimensões indicadas. Leia as descrições e observe os exemplos abaixo.

Quadrado: Deve ser escrito o contorno de um quadrado a partir da medida, em número de caracteres, do lado deste objeto.

Quadrado
lado = 3 lado = 5 lado = 7
***
* *
***
XXXXX
X   X
X   X
X   X
XXXXX
&&&&&&&
&     &
&     &
&     &
&     &
&     &
&&&&&&&

Retângulo: Deve ser escrito o contorno de um retângulo a partir das medidas, em número de caracteres, da largura e da altura deste objeto.

Retângulo
largura = 4
altura = 3
largura = 10
altura = 5
largura = 3
altura = 7
largura = 5
altura = 5
****
*  *
****
oooooooooo
o        o
o        o
o        o
oooooooooo
&&&
& &
& &
& &
& &
& &
&&&
XXXXX
X   X
X   X
X   X
XXXXX

Triângulo Retângulo: Deve ser escrito o contorno de um triângulo retângulo a partir da medida, em número de caracteres, da altura deste objeto. Note, pelo exemplos, que a base do triângulo e a altura terão o mesmo número de caracteres.

Triângulo Retângulo
altura = 3 altura = 5 altura = 7
*   
**
***
&
&&
& &
&  &
&&&&&
@
@@
@ @
@  @
@   @
@    @
@@@@@@@

Triângulo Isósceles: Deve ser escrito o contorno de um triângulo isósceles a partir da medida, em número de caracteres, da altura deste objeto. Note, pelo exemplos, que a base do triângulo terá 2 * altura - 1 caracteres.

Triângulo Isósceles
altura = 3 altura = 5 altura = 7
  *
 * *
*****
    m
   m m
  m   m
 m     m
mmmmmmmmm
      8
     8 8
    8   8
   8     8
  8       8
 8         8
8888888888888

Hexágono: Deve ser escrito o contorno de um hexágono a partir da medida, em número de caracteres, do lado deste objeto.

Hexágono
lado = 3 lado = 4 lado = 5 lado = 6
  ***
 *   *
*     *
 *   *
  ***
   ++++
  +    +
 +      +
+        +
 +      +
  +    +
   ++++
    xxxxx
   x     x
  x       x
 x         x
x           x
 x         x
  x       x
   x     x
    xxxxx
     $$$$$$
    $      $
   $        $
  $          $
 $            $
$              $
 $            $
  $          $
   $        $
    $      $
     $$$$$$

Quadriculado: Este padrão apresenta uma justaposição de quadrados contornados, em que quadrados vizinhos compartilham os caracteres da borda. Devem ser fornecidas a medida do lado do quadrado em número de caracteres e as dimensões do quadriculado, ou seja, a largura e altura em nĂºmero de quadrados.

Quadriculado
lado = 3
largura
= 4
altura = 5
lado = 4
largura
= 1
altura = 2
lado = 4
largura
= 4
altura = 3
@@@@@@@@@
@ @ @ @ @
@@@@@@@@@
@ @ @ @ @
@@@@@@@@@
@ @ @ @ @
@@@@@@@@@
@ @ @ @ @
@@@@@@@@@
@ @ @ @ @
@@@@@@@@@
xxxx
x  x
x  x
xxxx
x  x
x  x
xxxx
#############
#  #  #  #  #
#  #  #  #  #
#############
#  #  #  #  #
#  #  #  #  #
#############
#  #  #  #  #
#  #  #  #  #
#############

Xadrez: Este padrão é semelhante ao anterior, mas apresentará uma alternância entre quadrados contornados e quadrados preenchidos. O quadrado mais à esquerda na primeira linha deve ser do tipo não-preenchido.

Xadrez
lado = 5
largura
= 1
altura = 4
lado = 5
largura
= 5
altura = 5
xxxxx
x   x
x   x
x   x
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
x   x
x   x
x   x
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx
XXXXXXXXXXXXXXXXXXXXX
X   XXXXX   XXXXX   X
X   XXXXX   XXXXX   X
X   XXXXX   XXXXX   X
XXXXXXXXXXXXXXXXXXXXX
XXXXX   XXXXX   XXXXX
XXXXX   XXXXX   XXXXX
XXXXX   XXXXX   XXXXX
XXXXXXXXXXXXXXXXXXXXX
X   XXXXX   XXXXX   X
X   XXXXX   XXXXX   X
X   XXXXX   XXXXX   X
XXXXXXXXXXXXXXXXXXXXX
XXXXX   XXXXX   XXXXX
XXXXX   XXXXX   XXXXX
XXXXX   XXXXX   XXXXX
XXXXXXXXXXXXXXXXXXXXX
X   XXXXX   XXXXX   X
X   XXXXX   XXXXX   X
X   XXXXX   XXXXX   X
XXXXXXXXXXXXXXXXXXXXX

Descrição da entrada

Para todos os objetos serão indicados:

<tipo_do_objeto>
<caractere> 

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

Para os objetos Quadrado e Hexágono deverá ser lida a apenas a medida do lado.

<medida_do_lado>

Para os triângulos deverá ser lida a apenas a medida da altura.

<medida_da_altura>

Para o Retângulo deverão ser lidas as medidas da largura e da altura.

<medida_da_largura>
<medida_da_altura>

Para o Quadriculado e Xadrez deverá ser lida a medida do lado em número de caracteres. Em seguida, deverão ser lidas as medidas da largura e da altura em número de quadrados.

<medida_da_lado>
<medida_da_largura>
<medida_da_altura>

Exemplo:

R
:
4
5

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 simples (Quadrado, Retângulo, Triângulos e Hexágono) deverá ser um número maior ou igual a 3. O valor indicado para a largura ou altura do Quadriculado ou Xadrez deverá ser um número igual ou maior do que 1. Caso uma das dimensões fornecidas não siga estas restrições 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 as dimensões. Se a entrada estabelecer múltiplas dimensões, não é necessário continuar a verificação após uma dimensão inválida ter sido detectada.

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. Consulte os arquivos para ver os dados dos testes abertos. Cada tipo de objeto será testado por pelo menos um teste aberto e um teste fechado.

Os identificadores dos objetos e algumas dimensões estão indicados abaixo. O caractere utilizado para cada um dos desenhos continuará secreto...

TesteId do ObjetoDimensões
11Q??
12R??
13TR??
14TI??
15H??
16QQlado = 3
largura = 4
altura = 3
17Xlado = 4
largura = 1
altura = 5
18Hlado = 10
19QQlado = ??
largura ímpar
altura par
20Xlado = ??
largura ímpar
altura par

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 a entrada e a saída. Observe abaixo quais são os caracteres que devem ser escritos para o Hexágono de lado igual a 5.

    xxxxx
   x     x
  x       x
 x         x
x           x
 x         x
  x       x
   x     x
    xxxxx

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 lab06.py. No link Arquivos auxiliares há um arquivo aux06.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 20 submissões. Serão considerados os resultados da última submissão.

O peso desta tarefa é 3.

O prazo final para submissão é 22/09/2019.

A nota desta tarefa é proporcional ao número de testes que executaram corretamente, desde que o código esteja coerente com o enunciado. 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.