Lista 1

Recomendações Importantes

    • A lista deve ser entregue até às 23:59:59 do dia 18/11.
    • Deixe seus programas entendíveis. Imprima mensagens para auxiliar o usuário a utilizar o seu programa.
    • Seja criativo. As mensagens do seu programa não necessitam estar iguais aos exemplos, a menos que seja especificado.
    • A lista é individual, portanto não compartilhe seus códigos com outros alunos ou os coloque em locais públicos (Pastebin, Github).
    • Não copie. Se for detectado cópia da internet ou de um colega, as LISTAS envolvidas serão completamente zeradas.
    • Alguns exemplos aqui definidos podem apresentar comentários. Note que são apenas ilustrativos.
    • A correção da Questão Desafio é booleana. Ou seja: você receberá o ponto extra do desafio caso a resposta esteja 100% correta. Qualquer erro, mesmo que seja em apenas um caso, invalidará a questão.

Questão 1 - Trashtalker

Os sistemas do suporte entraram em pane! Ninguém sabe como consertar o problema imediatamente e todas as pessoas dependentes do suporte não param de mandar e-mails revoltosos. Para tentar desafogar a caixa de email do suporte enquanto eles tentam resolver o problema é necessário uma distração.

Seu dever é implementar um pequeno robô amigável capaz de se entreter o usuário. Esse robô deve ser capaz de manter-se num determinado assunto enquanto este for útil. Quando um assunto não for mais relevante (quando mais de 5 respostas forem feitas no mesmo tópico ou quando o usuário não quiser mais falar sobre isso) o robô deve mudar de assunto a fim de continuar distraindo o usuário.

Observações:

1. O sistema deve ser capaz de usar, ao menos, 4 tópicos (jogos, comida, psicologia e relatividade quântica) com, ao menos, 5 respostas diferentes de cada um.

2. A conversa deve persistir até que o usuário agradeça o robô (estando assim mais calmo).

Exemplo:

### Sistema de Reclamações - Suporte CIn ###
(No momento não dispomos de pessoal para atendê-lo, então deixe suas reclamações com nosso assitente automático)
Olá, eu sou o robô assistente do suporte, em que posso ajudá-lo?
Preciso de acesso de administrador ao banco de desenvolvimento itautec, pra ontem! //Entrada do usuário
Entendo, enviarei sua solicitação...
Mas enquanto processamos seu pedido por que não me fala o que você comeu hoje?
Não quero falar sobre isso! //Entrada do usuário
Entendo...
Soube que você joga Call of Duty.
Que ultraje! Só jogo battlefield, que é muito melhor. //Entrada do usuário
Interessante, então você joga videogame?
Claro, acabei de dizer isso. //Entrada do usuário
Você conhece GTA V?
Não quero falar sobre isso! //Entrada do usuário
Entendo...
Você sabia que todos os problemas pelo qual você pode estar passando podem ser um fruto da sua mente tentando preencher o vazio da sua vida com algo mais interessante e capaz de ocupar o seu tempo?
Nossa, você está certo. Obrigado. //Entrada do usuário
Eu que agradeço, até a próxima.
//Fim do programa.

Questão 2 - Isso não é robusto!

Camila gostou muito da cadeira de álgebra e decidiu se tornar monitora, mas com o tempo das férias, ela acabou esquecendo de alguns assuntos, principalmente quando se fala de vetores :T

Então, pra não dar vexame nas aulas de monitoria, ela entrou em contato com os monitores de IP e pediu pra que fosse feito um programa que, dado como entrada dois vetores não-nulos, ele dissesse se esses dois vetores são ortogonais ou não. Como os monitores são muito ocupados, eles pediram pra você fazer esse favor.

Obs.: O programa só deve encerrar quando o usuário não desejar mais entrar com vetores

Exemplo:

##Você é robusto e elegante?##
Me diga dois vetores e direi se são ortogonais ou não!
(1, 0, 0) //Entrada do usuário
(0, 1, 0) //Entrada do usuário
ISSO MESMO!! Esses dois vetores são ortogonais sim!
Gostaria de dizer novos vetores?
Não //Entrada do usuário
Arg, você não é elegante!

Questão 3 - Sistemas de Numeração

Pedro gostava de brincar com números desde criança e quando ele entrou em Ciência da Computação ficou simplesmente fascinado com o poder que tem o computador. Entre uma aula e outra, Pedro decidiu fazer uma questão por conta própria: Uma calculadora que converte números de um sistema de numeração de uma base n arbitrária (entre 2 e 9) para o sistema decimal.

Como Pedro está meio atarefado estudando para Álgebra, você tem o tempo perfeito para resolver esse problema antes dele e mostrar quem é o melhor programador!

Observações:

O sistema deve continuar executando até que o usuário deseje sair.

O sistema deve perguntar se o usuário quer mudar a base e continuar a execução ou sair.

Exemplo:

## Sistemas de Numeração ##
Qual a base do seu sistema de numeração?
8 // Entrada do usuário.
Digite o número desejado na base 8:
4701 // Entrada do usuário.
Resposta decimal: 2497
Deseja continuar com a base 8? (s/n)
n
Deseja utilizar outra base? (s/n)
n
// Fim do programa.

Questão 4 - Codificador Morse

João está apaixonado por Maria, porém o pais de Maria não gostam muito dessa ideia porque João não é da mesma classe social. João sabendo disso, bolou um jeito de se comunicar como Maria. Ele então pediu que ela aprendesse Código Morse, um sistema de representações de letras, números e sinais de pontuação através de um sinal codificado. Enquanto Maria aprendia, ele pediu a você, excelente programador, que fizesse um programa que traduziria os textos que ele mandaria para Maria utilizando o Código morse definido Internacionalmente (http://2.bp.blogspot.com/_42O_BvfxnoQ/ScfxKtw6eyI/AAAAAAAAACk/i4XqFK1aiIs/s1600-h/Codigo.gif), já que João não queria aprender Codigo Morse também.

Obs: Após a codificação o programa deve perguntar se João deseja codificar mais alguma coisa. Ao usuário digitar “Não, obrigado”, o programa deve parar.

Obs2: Ao encontrar um espaço o programa deve codificá-lo como um ‘/’


Ex:

#### BEM VINDO AO CODIFICADOR MORSE ####
Digite o que deseja codificar:
Eu gosto de programar //Entrada do usuário
Seu texto codificado é:
…-/--.---...----/-.../.--..-.-----..-..---.-.-.
Deseja continuar codificando?
Não, obrigado //Entrada do usuário
Obrigado por usar o codificador!

Questão 5 - Let's play with time

Eduarda é adolescente altamente supersticiosa (e solitária). Ela crê que sempre que sempre ao ver “horas repetidas” no relógio alguém está pensando nela, e, ao ver horas palíndromas e ela fizer um pedido, este se realizará. Contudo, nunca consegue ver todas essas horas no dia! Como eduarda não é muito boa com contas, ela pede que você, calouro de CC, faça um programa que dado uma certa hora, ele responda qual será a proxima hora repetida, a proxima hora palindroma, e quanto tempo falta para cada uma acontecer respectivamente.

Exemplo:

Let’s play with time
Digite a hora agora:
03:01 //Entrada do usuário
A próxima hora repetida é 03:03
Em 2 minutos alguem estará pensando em você
A proxima hora palindroma é 03:30
Em 29 minutos faça um pedido

Questão 6 (Desafio) - Find Me

Uma excursão de alunos de ensino básico vai visitar o Centro de Informática (o propósito da excursão não foi divulgado) e você foi incumbido de demonstrar para essas pequenas mentes o poder que há na computação... com um pequeno "truque de mágica" que interesse as crianças.

Seu objetivo é escrever um programa que "adivinhe" qual número que a criança pensou (detre uma lista de 0 a 100). Para adivinhar o número seu programa perguntará às crianças os divisores do número até que tenha-se certeza de qual é o número.

Observações: Para evitar trabalho extensivo seu programa deve fazer uma pergunta, então, baseado na resposta, inferir se já possui resultado e, caso não consiga obter o resultado, é que se deve fazer outra pergunta.

Exemplo:

Escolha um número de 0 a 100:
12 // (Pensamento do usuário, ele não digita nada)
Já escolheu? Ótimo, deixe-me adivinhar.
Seu número é divisível por 2?
sim // Entrada do usuário
Seu número é divisível por 4?
sim // Entrada do usuário.
Seu número é divisível por 8?
nao // Entrada do usuário.
Seu número é divisível por 3?
sim // Entrada do usuário.
Seu número é divisível por 9?
nao // Entrada do usuário.
Seu número é divisível por 5?
nao // Entrada do usuário.
Seu número é divisível por 7?
nao // Entrada do usuário.
Advinhei, seu número é: 12
//Fim do programa.