.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õesNesta 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 |
|
|
|
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 = 4altura = 3 |
largura = 10altura = 5 |
largura = 3altura = 7 |
largura = 5altura = 5 |
|
|
|
|
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 |
|
|
|
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 |
|
|
|
|
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 = 4altura = 5 |
lado = 4 = 1altura = 2 |
lado = 4 = 4altura = 3 |
|
|
|
|
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 = 1altura = 4 |
lado = 5 = 5altura = 5 |
||
|
|
Para todos os objetos serão indicados:
<tipo_do_objeto>
<caractere>
Os identificadores dos tipos dos objetos serão as seguintes:
Q
: Quadrado
R
: Retângulo
TR
: Triângulo Retângulo
TI
: Triângulo Isâosceles
H
: Hexágono
QQ
: Quadriculado
X
: Xadrez
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
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.
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...
Teste | Id do Objeto | Dimensões |
---|---|---|
11 | Q | ?? |
12 | R | ?? |
13 | TR | ?? |
14 | TI | ?? |
15 | H | ?? |
16 | lado = 3 largura = 4 altura = 3 | |
17 | X | lado = 4 largura = 1 altura = 5 |
18 | H | lado = 10 |
19 | lado = ?? largura ímpar altura par | |
20 | X | lado = ?? largura ímpar altura par |
Releia, se necessário, as instruções para fazer os testes em Testes com o SuSy.
xxxxx
x x
x x
x x
x x
x x
x x
x x
xxxxx
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 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.