Tarefa 1 - Linguagem de programação C

Prazo de entrega:
Segunda chance:
Esta tarefa tem peso 1.

Vamos resolver alguns exercícios para nos acostumar com a linguagem de programação C.


1. Capicua

Um capicua é um número palíndromo, i.e., um número decimal que lido da esquerda para a direita é o mesmo que quando lido da direita para a esquerda. Exemplos:

Escreva um programa capicua.c que verifique se os números dados são capicuas. Você deve usar apenas operações para números inteiros, isso é, não trate o número como uma string. Lembre-se de que, ao contrário de Python, em C há um valor máximo e um valor mínimo que pode ser representado por cada tipo inteiro: o que acontece se o número não couber no tipo escolhido?

Entrada

A primeira linha contém um número inteiro $n$ que indica a quantidade de números que serão testados. As próximas $n$ linhas contêm um número inteiro $k$.

4
3
34
42
707

Saída

Para cada número inteiro $k$ lido, imprima uma linha informando se ele é capicua ou não.

3 eh capicua
34 nao eh capicua
42 nao eh capicua
707 eh capicua

2. Inverso das somas parciais

Dada uma sequência finita de números reais, a sequência das somas parciais é uma nova sequência de mesmo tamanho cujos termos correspondem às somas dos prefixos. Por exemplo, se a sequência for 1 2 3 4 5, então a sequência das somas parciais será 1 3 6 10 15. O inverso de uma sequência finita é uma sequência com os mesmos termos, mas em ordem inversa. Por exemplo, o inverso de 1 3 6 10 15 é 15 10 6 3 1.

Escreva um programa parciais.c que leia uma sequência e mostre o inverso da sequência das somas parciais.

Entrada

A primeira linha contém um número inteiro positivo $n \le 1000$ que indica o número de termos da sequência. A seguir, são dados $n$ números inteiros, separados por espaço, correspondendo à sequência.

5
1 2 3 4 5

Saída

O inverso da sequência das somas parciais, com os números separados por espaço.

15 10 6 3 1

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.