\documentclass[11pt]{article}

% Escrevendo em português
\usepackage[brazil]{babel}
\usepackage[latin1]{inputenc}


%\language=1
\pagestyle{empty}
\setlength{\topmargin}{-.5in}
\setlength{\textheight}{10in}
\setlength{\oddsidemargin}{-.125in}
\setlength{\evensidemargin}{-.125in}
\setlength{\textwidth}{6.75in}

\newcommand{\sen}{\makebox[0.8cm]{sen}}

\def\bk {$\backslash$}


\newcommand{\comb}[2]   %%    to be used in math mode
{\left( \begin{array}{c} #1 \\ #2 \end{array} \right) }

\def\ua{\uparrow}

\def\ni{\noindent}

\def\pulo{\vspace{0.2cm}}
\def\pulao{\vspace{0.5cm}}
\def\pulaozao{\vspace{1cm}}

\newcommand{\primeira}[1]
{$#1^{\mbox{\scriptsize\b{a}}}$}

\newcommand{\primeiro}[1]
{#1$^{\mbox{\scriptsize\b{o}}}$}

\pagestyle{empty}

\begin{document}

\begin{center}
\large {\bf MAC 115 -- Introdução à Computação}\\\vspace{1\jot}
{Instituto de Física -- Segundo Semestre de 2002 - Noturno} \pulao\\

\primeira{2} Prova -- 6/12/2002
\end{center}

\ni Nome do aluno: \underline{\makebox[9cm]{}} Turma:\underline{\makebox[2.7cm]{}} \pulao \\
    Assinatura:  \underline{\makebox[13.8cm]{}} \pulao \\
    Professor(a):  \underline{\makebox[13.6cm]{}} \pulao \\
\primeiro{N} USP: \underline{\makebox[7.2cm]{}}
\hspace{0.2cm} Curso: \underline{\makebox[5.4cm]{}}
\vspace{1.5cm}

\ni {\bf Instruções:}
\begin{enumerate}
\item Não destaque as folhas deste caderno.
\item A prova pode ser feita a lápis. Cuidado com a legibilidade.
\item Há~$3$ questões na prova. Verifique antes de começar a prova
se o seu caderno de questões está completo.
\item Não é permitido o uso de folhas avulsas para rascunho.
\item Nas questões que envolvem elaboração de programas, coloque
comentários suficientes para que o programa seja facilmente
compreendido.
\item Não é necessário apagar rascunhos no caderno de questões.
\end{enumerate}

\vspace{1.5cm}

\begin{center}
\large Não escreva nesta parte da folha
\end{center}

\ni
\begin{center}
\begin{tabular}{|c|c|}  \hline
\rule[-0.25cm]{0cm}{0.8cm}Quest\~ao & \makebox[2cm]{Nota} \\ \hline 
\hline 
\rule[-0.25cm]{0cm}{0.8cm}1  & \\ \hline
\rule[-0.25cm]{0cm}{0.8cm}2  & \\ \hline
\rule[-0.25cm]{0cm}{0.8cm}3  & \\ \hline
%\rule[-0.25cm]{0cm}{0.8cm}4  & \\ \hline  \hline 
\rule[-0.25cm]{0cm}{0.8cm}Total & \\ \hline
\end{tabular}
\end{center}
\begin{center}
  \bigskip
\textbf{BOA SORTE!}
\bigskip
\end{center}
\newpage

\ni{\underline {\bf Quest\~ao 1}}~~(valor: 3.0)

\medskip

\ni Simule a execução do programa abaixo \textit{destacando a sua saída} (o
que vai sair na tela).

{
\begin{verbatim}
#include <stdio.h>
#define NMAX 10

void soma(int B[][NMAX], int k);

int main()
{
  int i, j, x;
  int A[NMAX][NMAX];
  x = 4;
  for (i = 0; i < 2; i++)
    for (j = 0; j < 2; j++)
      A[i][j] = i + j;

  soma(A, x);
  printf("%d %d\n", A[0][0], A[0][1]);
  printf("%d %d\n", A[1][0], A[1][1]);
  printf("%d\n", x);
  return 0;
}

void soma(int B[][NMAX], int k)
{
  int i, j, x;
  x = 2;
  for (i = 0; i < 2; i++)
    for (j = 0; j < 2; j++)
      B[i][j] = B[i][j] + k;
}
\end{verbatim}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage

\ni{\underline{\bf Quest\~ao 2}}~~(valor: 3.0)
\medskip\noindent 
\begin{itemize}
  
\item[(\textit{a})]Escreva uma função de protótipo
\begin{verbatim}
  int pertence(double x, double B[], int m);
\end{verbatim}
  que recebe como parâmetros um real~$x$, um vetor real~$B$ com~$m$ elementos, 
  e verifica se~$x$ ocorre em~$B$.

\newpage
\item[(\textit{b})]Escreva uma função de protótipo
\begin{verbatim}
  int contido(double A[], double B[], int n, int m);
\end{verbatim}
  que recebe como parâmetros um vetor real~$A$ com~$n$ elementos e um vetor
  real~$B$ com~$m$ elementos, ambos representando conjuntos, e verifica
  se~$A\subseteq B$, isto é, se~$A$ está contido em~$B$.  Use a função do
  item~(\textit{a}), mesmo que você não a tenha feito.

\newpage
\item [(\textit{c})]Escreva um programa que, usando a função do
  item~(\textit{b}), determina se dois conjuntos dados são iguais (lembre
  que~$A=B$ se e somente se~$A\subseteq B$ e~$B\subseteq A$).

\end{itemize}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newpage

\ni{\underline{\bf Quest\~ao 3}}~~(valor: 4.0)
\medskip\noindent 
\begin{itemize}

\item[(\textit{a})] Escreva uma função de protótipo
\begin{verbatim}
  double vmed(double A[][NMAX], int m, int n, int i, int j);
\end{verbatim}
  que recebe como parâmetros uma matriz real~$A$ com~$m$ linhas e~$n$ colunas
  e uma posição $(i,j)$ da matriz, e devolve a média aritmética dos vizinhos
  de~$A[i][j]$.  (Em geral, essa média é a média aritmética dos números
  $A[i-1][j]$, $A[i+1][j]$, $A[i][j-1]$, $A[i][j+1]$.  Nas bordas da matriz,
  essa média é uma média de menos de quatro números; por exemplo, no caso em
  que $(i,j)=(0,0)$, a média deve ser dos números $A[1][0]$ e~$A[0][1]$.)  

\newpage
\item [(\textit{b})] Escreva uma função de protótipo
\begin{verbatim}
  void med(double A[][NMAX], int m, int n, double M[][NMAX]);
\end{verbatim}
  que recebe como parâmetro uma matriz real~$A$ com~$m$ linhas e~$n$ colunas 
  e devolve na matriz~$M$ uma nova matriz, obtida de~$A$ substituindo-se cada
  entrada pela média aritmética de seus vizinhos.  Para isto, utilize a função
  do item anterior, mesmo que você não a tenha feito.

\newpage
\item [(\textit{c})] Escreva um programa que lê inteiros~$k$, $m$ e~$n$ e uma
  uma matriz real~$A$ com~$m$ linhas e~$n$ colunas, e que imprime~$k+1$
  matrizes, a saber, as matrizes~$A^{(j)}$ obtidas pela aplicação da
  função \texttt{med()} $j$ vezes, onde~$0\leq j\leq k$.  (Note que~$A^{(0)}$ é
  a matriz original~$A$.)

\end{itemize}

\end{document}