MC102 - Algoritmos e Programação de Computadores
MC102 Horários Plano de
desenvolvimento
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 com números

Nesta tarefa, vamos praticar o comando repetitivo for e o método range produzindo algumas figuras geométricas. O desenho mais elaborado será um losango com o maior número ao centro e com sequências decrescentes levando até as bordas. Veja os exemplos:

Losango
   0
  010
 01210
0123210
 01210
  010
   0
     0
    010
   01210
  0123210
 012343210
01234543210
 012343210
  0123210
   01210
    010
     0

Antes de lidarmos com esta complexidade, desenharemos partes mais simples do objetivo principal. A primeira divisão será vertical e desenharemos os triângulos à esquerda e à direita, mantendo a coluna central.

Triângulo Esquerdo Triângulo Direito
   0
  01
 012
0123
 012
  01
   0
     0
    01
   012
  0123
 01234
012345
 01234
  0123
   012
    01
     0
0
10
210
3210
43210
543210
43210
3210
210
10
0
0
10
210
3210
210
10
0

A segunda divisão será horizontal e desenharemos o triângulo superior e o triângulo inferior, mantendo a linha central.

Triângulo Superior Triângulo Inferior
   0
  010
 01210
0123210
     0
    010
   01210
  0123210
 012343210
01234543210
0123210
 01210
  010
   0
01234543210
 012343210
  0123210
   01210
    010
     0

Descrição da entrada

A primeira linha da entrada indicará o objeto a ser desenhado, de acordo com o seguinte código:

A segunda linha indicará o número máximo que aparecerá no desenho. Deve ser um número entre 1 e 9.

Descrição da saída

A saída deverá ser 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 um dos objetos descritos acima deverá ser emitida a mensagem:

Objeto invalido.

Caso a segunda linha não contenha um valor entre 1 e 9 deverá ser emitida a mensagem:

Numero maximo invalido.

Caso as duas linhas contenham erro, apenas a primeira mensagem deverá ser emitida. Ou seja, em caso de objeto inválido, não é necessário verificar se o número máximo está dentro do intervalo esperado.

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. Teremos treze testes abertos e dois testes fechados.

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

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

O Triângulo Direito é o objeto mais fácil de ser desenhado, pois você só precisa se preocupar em escrever os números. Para os outros objetos, você deverá escrever espaços em branco à esquerda dos números para obter a forma desejada. 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 Losango com máximo 4:

    0
   010
  01210
 0123210
012343210
 0123210
  01210
   010
    0

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, seus respectivos resultados compactados e scripts para facilitar os testes.

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 é 12/05/2019. Sugerimos que esta tarefa seja realizada antes da Prova 1.

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.