\documentclass[brazil]{article}

\usepackage[latin1]{inputenc}
\usepackage[portuguese]{babel}

\title{Prova de Programa\c{c}\~ao de Computadores}

\author{Prof.: Carlos Camar\~ao}

\date{23 de Junho de 2005}

\addtolength\textwidth{15mm}
\setlength{\parindent}{0pt}

\pagestyle{empty}

\begin{document}

\maketitle

\begin{enumerate}

\item (10 pontos) Escreva um programa que leia um seqüência de
números inteiros positivos do dispositivo de entrada padrão e imprima,
no dispositivo de saída padrão, essa seqüência em ordem inversa. A
sequência de números lidos termina quando um número negativo ou igual
a zero for lido. Esse número negativo ou zero não faz parte da
sequência de números positivos da entrada, sendo usado apenas para
indicar o final da seqüência de números positivos, e não deve ser
impresso. Por exemplo, se a entrada for {\tt 1 2 3 0}, a saída deve
ser {\tt 3 2 1}.

Para ler os valores inteiros da entrada, você deve usar o método {\it
nextInt\/} da classe {\it Scanner\/}, e deve desconsiderar mas tratar
dados incorretos, que não representam inteiros válidos. Por exemplo,
se a entrada for {\tt 1 2 * 3 -1}, a saída deve ser {\tt 3 2 1}. 

Para isso, você deve tratar a exceção {\it InputMismatchException\/},
causada pelo método {\it nextInt\/} quando o dado que foi lido não
constitui um inteiro, mas continuar a leitura, desconsiderando o dado
que causou a exceção.

\item (10 pontos) Escreva um programa em Java que leia uma seqüência
de cadeias de caracteres (valores de tipo {\it String\/} do
dispositivo de entrada padrão e imprima, no dispositivo de saída
padrão, uma sequência de caracteres {\tt 0} ou {\tt 1}, sendo o
$i$-ésimo caractere dessa seqüência igual a {\tt 1} se a $i$-ésima
seqüência lida é palíndrome, e {\tt 0} caso contrário.

Uma seqüência é palíndrome se ela é igual ao seu inverso. Por exemplo,
{\tt k}, {\tt xax} e {\tt *1aba1*} são palíndromes.

A leitura deve terminar quando o método {\it hasNext\/} da classe {\it
Scanner\/} retornar valor {\tt false}.

Dica: Para resolver esse problema, você pode usar, se quiser, o método
{\it reverse\/} da classe {\it StringBuilder\/}, que retorna a
seqüência de caracteres passada como argumento em ordem inversa. 

A classe {\it StringBuilder\/} é semelhante a {\it String\/},
representa também uma seqüência de caracteres, com a diferença de que
os caracteres da seqüência podem ser modificados (e inseridos e
removidos), ao contrário das seqüências de caracteres representadas
por objetos da classe {\it String\/}. Nessa questão não estamos
interessados diretamente nessa propriedade de modificação (nem de
inserção nem de remoção) de caracteres, mas sim no fato de que a
classe {\it StringBuilder\/} define um método {\it reverse\/}, sem
par\^ametros, que você pode usar. O método {\it reverse\/} dessa
classe retorna um objeto de tipo {\it StringBuilder\/} que tem os
caracteres da seqüência representada pelo objeto alvo da mensagem
(trata-se de um método não estático) em ordem inversa. Por exemplo,
{\it new StringBuilder("123").reverse()\/} retorna um objeto de tipo
{\it StringBuilder\/} que representa a mesma seqüência de caracteres
que {\it new StringBuilder("321")\/}.

Para comparar igualdade de dois objetos de tipo {\it StringBuilder\/},
você tem (infelizmente) que transformá-los em objetos de tipo {\it
String\/}, usando o método {\it toString\/} da classe {\it
StringBuilder\/}; em seguida, você pode comparar os dois valores de
tipo {\it String\/} obtidogs, usando o método {\it equals\/} da classe
{\it String}.

\item (10 pontos) Escreva em Java um programa que leia dois valores inteiros
positivos {\it numQuest\/} e {\it numAlunos\/}, que representam
respectivamente o número de quest\~oes de uma prova de múltipla
escolha e o número de alunos de uma turma.

Em seguida, o programa deve ler, para cada uma das quest\~oes, um
valor inteiro que indica a resposta correta de cada questão.

Depois, o programa deve ler, para cada um dos {\it numAlunos\/}
alunos, {\it numQuest \/} valores inteiros não-negativos, que
representam as respostas de cada aluno para cada questão da prova.

O programa deve imprimir, para cada aluno, o seu número (de 1 a {\it
numAlunos\/}) e o número de respostas corretas dadas por esse aluno.

Além disso, o programa deve imprimir a média das notas da turma nessa
prova.

Você pode considerar que os dados de entrada estão corretos.

\end{enumerate}

\end{document}
