\documentclass{article}
\usepackage[portuges]{babel}
\usepackage[latin1]{inputenc}
\usepackage{fancyhdr}
\usepackage{times}
\usepackage{alltt}
\usepackage{graphicx}% para poder utilizar imagens
\usepackage{fancyvrb}% para Verbatim
\usepackage{url}

%\input{my-macros}
\newcommand{\theCexemplo}{% contador de exercicios
  \arabic{Cexercicio}}

\newcounter{Cexercicio}
\newenvironment{exercicio}[1]
  {\refstepcounter{Cexercicio}%
	\vspace{.3cm}\noindent
	\textbf{Exercício \arabic{Cexercicio}: #1}%
	\vspace{.5cm}\hrule}%
  {\vspace{.5cm}\hrule\vspace{.5cm} }

%-------------------------------------------------------------------------
%--  Arranjo gráfico das páginas e da mancha de texto
%-------------------------------------------------------------------------
\usepackage[twoside,verbose,body={16cm,24cm},
			left=30mm,top=20mm]{geometry}

\pagestyle{fancy}

\fancyfoot{}% clear all defaults for footers
\fancyhead{}% clear all defaults for headers
\fancyfoot[RO]{\small \copyright \ DI/UM - \textsc{Dep. Informática} \ \
\thepage} \fancyfoot[LE]{\small \thepage\ \ \copyright \ DI/UM - \textsc{Dep.
Informática}}

\fancyhead[RO]{\small \leftmark} \fancyhead[LE]{\small Programação Imperativa -
Ficha 1}
\renewcommand{\headrulewidth}{0.5pt}% Espessura da linha que separa o header

\fancypagestyle{plain}{%
\fancyhf{} % limpa todos os headers e footers deste estilo
\fancyfoot[RO]{\small \copyright \ DI/UM - \textsc{Dep. Informática} \ \
\thepage}
\renewcommand{\headrulewidth}{0pt}
}

\parindent=0pt

\setlength{\parskip}{.5\baselineskip}% Distância entre paragráfos

%-----------------------------------------------------------------------------------
%-- Início
%-----------------------------------------------------------------------------------

\title{Programação Imperativa\\ Departamento de Informática\\
Universidade do Minho\\
1º Ano \hfill LMCC\\
2004/2005}
\date{8 de Abril de 2005}
\author{Ficha Teórico-Prática Nº 4\\
Utilização e Manipulação de Vectores e Matrizes em C}

\begin{document}
\maketitle

\section*{Objectivos}

O objectivo principal desta ficha é familiarizar o aluno com a utilização e
manipulação de vectores e matrizes em C. As strings são casos particulares de
arrays: uma string é um array em que os elementos são todos do tipo char.
Assim, nesta ficha surgem também alguns exercícios envolvendo manipulação de
strings.

\section*{Exercícios}

\begin{exercicio}{"Média de 10 números inteiros"}
Especifique um programa e codifique-o em C que lê 10 números inteiros
positivos de um ficheiro externo (considere que cada linha do ficheiro contem
apenas um número) e escreve:
\begin{itemize}
\item a sua média e o valor máximo;
\item os numeros maiores que a média;
\item a quantidade de números menores que a média;
\end{itemize}

Depois de ter realizado as tarefas anteriores faça o programa produzir os
resultados num ficheiro de nome relatorio.txt.
\end{exercicio}

\begin{exercicio}{"Capicua"}
Especifique uma função que recebe uma string e verifica se a mesma é capicua
(lida da esquerda para a direita, ou da direita para a esquerda, é a mesma
palavra/frase).

Exemplos típicos: ala ou rapar.

Um caso curioso (e, claro, mais complexo) é a seguinte Capicua brasileira:
Socorram-me subi no onibus em Marrocos.
\end{exercicio}

\begin{exercicio}{"Conversão Romano-Árabe"}
Especifique uma função que recebe uma string contendo um número escrito em
notação romana e que dá como resultado o respectivo valor inteiro
(correspondente à notação arábica).
\end{exercicio}

\begin{exercicio}{"Cifra por substituição arbitrária"}
Considere a cifra (palavra-chave) constituída pelas letras "SAPO" seguidas de
um dígito n (entre 0 e 9). Para a cifragem (codificação) da mensagem
efectuam-se os seguintes passos:

\begin{itemize}
\item reduzem-se espaços seguidos a um único espaço e mantém-se os caracteres
de pontuação;

\item os digitos rodam-se (circularmente) para a direita da
quantidade n;

\item convertem-se todas as letras em maiúsculas ou minúsculas;

\item considera-se a seguinte tabela de codificação:

\begin{tabular}{|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|c|}
  \hline
  A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z \\
  S & A & P & O & B & C & D & E & F & G & H & I & J & K & L & M & N & Q & R & T & U & V & W & X & Y & Z \\
  \hline
\end{tabular}

A construção desta tabela limita-se a colocar a palavra chave no início e
completar com as restantes letras do alfabeto, não colocando as letras que se
repetem.

\item para a codificação, substitui-se cada um dos carácteres da primeira linha
pelo carácter correspondente da segunda linha.
\end{itemize}

Construa um programa que dada uma cifra, codifique a mensagem, e um outro
que, dada a mensagem cifrada e a cifra, descodifique a mensagem.
\end{exercicio}

\begin{exercicio}{"Estatística"}
Crie um programa que leia todos os caracteres de um texto (até encontrar um o
fim de ficheiro, eof) e que no fim indique quantas vezes apareceu cada uma
das 26 letras do alfabeto (considere maiúsculas iguais às minúsculas).
\end{exercicio}

\end{document}
