Tarefa 1 - Linguagem de programação C

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

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.