\documentclass{article}

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

\title{2$^{\underline{\mbox{a}}}$ Prova de Algoritmos e Estruturas de Dados I}

\pagestyle{empty}	

\author{Professor: Carlos Camar\~ao}
\date{29 de Junho de 2006}

\begin{document}

\maketitle
\thispagestyle{empty}

Para leitura de dados, voc\^e pode usar os m\'etodos est\'aticos {\tt
readInt} e {\tt readFloat} da classe {\tt Entrada} definida a seguir:

{\tt 
\begin{tabbing}
xxxxx\=\+\kill
cla\=ss Entrada \{\+ \\ \\
       static BufferedReader f = new BufferedReader(new InputStreamReader(System.in));\\ \\
       public \=static int readInt() \{ \+\\
             String s = f.readLine();\\
             return Integer.parseInt(s); \-\\
       \} \\ \\
       public static int readFloat() \{ \+\\
             String s = f.readLine();\\
             return Float.parseFloat(s); \-\\
       \} \-\\
\}
\end{tabbing} }

\begin{enumerate}

\item (10 pontos) Fa\c{c}a um programa que leia um valor inteiro
positivo $n$, e em seguida $n$ seq\"u\^encias de valores inteiros
positivos, cada uma delas terminada por um valor inteiro negativo ou
nulo, e imprima a soma dos maiores valores de cada uma das
seq\"u\^encias.

Por exemplo, se os valores digitados pelo usu\'ario forem:
  
  \[ \mathtt{ \begin{array}{l}
        3    \\
        1    \\
        2   \\
        0    \\
        2    \\
        20   \\
        10   \\
        -1   \\
        3    \\ 
        30   \\
        5    \\
        30    \\
        0    
      \end{array} }\]
o programa deve imprimir 52 como resultado (52 = 2+20+30). 

O primeiro valor ({\tt 3}) indica que são 3 seqüências de valores a
serem lidos. As seqüências, terminadas respectivamente por {\tt 0},
{\tt -1} e {\tt 0}, são: {\tt [1,2]}, {\tt [2,20,10]}, {\tt
[3,30,5,30]}.

O programa deve supor, em cada situa\c{c}\~ao de entrada de dados, que
o valor lido \'e esperado, n\~ao sendo fornecida como entrada nenhuma
cadeia de caracteres que n\~ao representa um n\'umero inteiro. N\~ao
\'e necess\'ario testar se o primeiro valor lido ($n$) representa
de fato um valor positivo, nem se o número de seqüências de valores é
de fato igual ao primeiro valor lido.

\item ({\it 10 pontos\/}) Um armaz\'em trabalha com $n$ mercadorias
diferentes ($n=100$), identificadas por n\'umeros de 1 a $n$.

Um funcion\'ario desse armaz\'em tem sal\'ario mensal estipulado como
20\% da receita mensal obtida com as vendas que ele realizou, mais um
b\^onus igual a 10\% da receita mensal obtida com o produto que teve o
maior n\'umero de unidades vendidas.

Escreva um programa que leia, para cada mercadoria de 1 a $n$, o
n\'umero de unidades vendidas em um determinado m\^es por esse
funcion\'ario e o pre\c{c}o unit\'ario da mercadoria, e imprima o
sal\'ario do funcion\'ario, nesse m\^es.

{\em Dica\/}: na sua implementa\c{c}\~ao, defina uma classe com:

\begin{itemize}

  \item uma vari\'avel inteira $n$, um arranjo de inteiros de tamanho
  $n$, que ir\'a armazenar para cada mercadoria o n\'umero de unidades
  vendidas, e um arranjo de pre\c{c}os, que ir\'a armazenar para cada
  mercadoria o seu pre\c{c}o unit\'ario.

  \item m\'etodo para leitura dos dados e para c\'alculo do sal\'ario
  do funcion\'ario do armaz\'em.

\end{itemize}

\item (10 pontos) Escreva em Java um programa que leia dois valores inteiros
positivos $n$ e $m$, que representam respectivamente o número de
questões de uma prova de múltipla escolha e o número de alunos de uma
turma. Em seguida, o programa deve ler, para cada um dos $m$ alunos,
$n$ valores inteiros não-negativos, que representam as respostas de
cada aluno para cada questão da prova. Depois disso, o programa deve
ler, para cada uma das questões, um valor inteiro que indica a
resposta correta de cada questão. O programa deve imprimir, para cada
aluno, o seu número (de 1 a $m$), e o número de respostas corretas
dadas por esse aluno. 

\end{enumerate}

\end{document}


