.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ígonosSubmissõ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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
Para todos os objetos serão indicados:
<tipo_do_objeto>
<caractere>
<dimensao>
Os identificadores dos tipos dos objetos serão as seguintes:
Q
: Quadrado
T
: Triângulo
L
: Losango
H
: Hexágono
O
: Octógono
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
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á:
****
******
********
**********
********
******
****
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.
Teste | Objeto | Caractere | Dimensão |
---|---|---|---|
01 | Q | * | 3 |
02 | Q | X | 10 |
03 | T | * | 3 |
04 | T | & | 8 |
05 | L | * | 3 |
06 | L | o | 5 |
07 | L | ? | 12 |
08 | H | * | 3 |
09 | H | % | 4 |
10 | H | @ | 8 |
11 | O | * | 3 |
12 | O | # | 5 |
13 | O | % | 7 |
14 | S | * | 3 |
15 | H | * | 0 |
16 | Q | ||
17 | T | ||
18 | L | ||
19 | H | 5 | |
20 | O | 5 |
Releia, se necessário, as instruções para fazer os testes em Testes com o SuSy.
***
*****
*******
*****
***
Você pode escrever vários caracteres iguais utilizando comandos como:
print(5 * "*")
Você pode escrever uma cadeia de caracteres sem imprimir uma quebra de linha alterando o finalizador padrão:
print("*****", end='')
Você pode escrever vários elementos sem um caractere em branco entre eles alterando o separador padrão:
print("a", "b", sep='')
Utilize o gerador de sequências range(inicio, fim,
passo)
. Veja um exemplo em ordem crescente e outro em ordem
decrescente.
>>> for i in range(1,8,2) :
print(i)
1
3
5
7
>>> for i in range(7,0,-2) :
print(i)
7
5
3
1
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.