Prazo de entrega recomendado:
Vamos resolver alguns exercícios para nos acostumar com a linguagem de programação C.
1. Calendário
Juliana é uma assídua participante de um evento interplanetário de Computação. O evento acontece em diferentes planetas e, ao acessar o site do evento em um planeta, ela encontra apenas informações sobre o número de dias restantes para o evento.
O problema é que esse número está representado na base seis. Pra complicar ainda mais, cada planeta tem um sistema de calendário diferente. Toda data é descrita por dia, mês e ano, mas o número de dias de um mês e o número de meses de um ano variam dependendo do planeta. Um lembrete: quanto vale 4321 na base 6?
$$ (4321)_{6} =(1 \times 6^0 + 2 \times 6^1 + 3 \times 6^2 + 4 \times 6^3) _{10} $$
Juliana quer marcar em sua agenda planetária o dia do evento. Escreva
um programa calendario.c
que informe a data em que ocorrerá o
evento. Suponha que todas as datas são referentes ao mesmo planeta e
que todo ano tem o mesmo número de meses e que todo mês tem o mesmo
número de dias.
Entrada
-
A primeira linha contém a a data em que o site foi acessado, no formato dia/mês/ano com números decimais.
-
A segunda linha contém o número de dias de um mês e o número de meses de um ano, também como números decimais.
-
A última linha contém o número de dias restantes, escrito em base seis. Você pode supor que esse número tem até oito algarismos.
12/3/2016
30 12
151
Saída
Para cada entrada, a saída deverá mostrar a data em que ocorrerá o evento no formato dia/mês/ano de acordo com o sistema de calendário informado.
19/5/2016
2. Diferença simétrica
Paula é uma menina apaixonada por matemática e ela acaba de aprender em sua escola a diferença simétrica de dois conjuntos. A diferença simétrica de dois conjuntos é o conjunto de todos elementos que pertencem a algum dos conjuntos, mas não a ambos. Veja o diagrama de Venn que representa a diferença simétrica de $A$ e $B$.
Paula deseja construir um programa diferenca.c
para computar a
diferença simétrica entre dois conjuntos. Como se trata de conjuntos,
a ordem dos elementos da diferença simétrica não é relevante. Mas
Paula é muito organizada e gostaria que os números da saída estivessem
ordenados.
Entrada
A primeira linha contém os números de elementos dos dois conjuntos. As linhas seguintes contêm, respectivamente, os elementos desses conjuntos. Suponha que cada conjunto tem no máximo 50 elementos.
4 5
4 6 7 9
1 2 6 8 9
Saída
Uma única linha com os números da diferença simétrica em ordem.
1 2 4 7 8
3. Ponto de sela
Em matemática, um ponto de sela de uma função bidimensional é um ponto do domínio que é máximo em uma direção e mínimo na outra. Ele tem esse nome porque uma sela pode ser representada como uma função que contém um ponto com essa propriedade, como na figura abaixo.

Podemos discretizar uma função bidimensional e armazenar os valores em uma matriz $A$ de forma que cada elemento $a_{ij}$ represente o valor de uma função $f$ no ponto de coordenadas inteiras $(i, j)$. Nesta tarefa, vamos considerar um elemento da matriz como ponto de sela se ele for o único mínimo na linha e o único máximo na coluna.
Escreva um programa sela.c
que encontre um ponto de sela na matriz.
Entrada
A primeira linha contém o número de linhas e de colunas da matriz. As linhas seguintes contêm os elementos da matriz, linha por linha. Suponha que cada matriz tem no máximo 100 linhas e no máximo 100 colunas.
2 3
1 2 3
6 5 4
Saída
Se a matriz contiver ponto de sela, uma mensagem com a forma
(<i>, <j>) eh ponto de sela com valor <a_ij>
. Do contrário, uma
mensagem nao existe ponto de sela
.
(1, 2) eh ponto de sela com valor 4
Critérios
Nesta e nas próximas tarefas será permitido utilizar apenas as
construções ou conteúdos vistos até a unidade correspondente. Além
disso, todo programa deve estar organizado e modularizado,i.e., não
escreva todo o programa em uma função main
, nem escreva função com
várias responsabilidades. Também é proibido utilizar variáveis
globais.
Correção
Esta tarefa será corrigida automaticamente sempre que você realizar um
git push
. Depois de terminada a tarefa, deve-se utilizar o botão na
interface de notas para solicitar a correção de um monitor.