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:
-
10201
-
2002
-
565
-
99
-
7
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.
![](saddle_point.png)
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.