\documentclass[11pt]{article}

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

%% Tamanho da página
\setlength{\textwidth}{17cm}
\setlength{\textheight}{23cm}

%% Parágrafo
\setlength{\parindent}{5mm}
\setlength{\parskip}{1mm}

%% Empurra para cá empurra para lá
\evensidemargin -0.3cm
\oddsidemargin -0.3cm
\topmargin -0.7in

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}

\begin{center}
  \underline{Segundo Exerc\'{\i}cio-Programa: Las Begas}
\end{center}

\noindent 
%%%% O primeiro parágrafo a partir daqui

O dono de um cassino de ``Las Begas'', em ``ABUSA'', pretente fazer uma máquina
jogadora de ``Seven \& Half'' para jogar contra seus clients, digo, seus
clientes.  O dono do cassino, Mr.\ H. R. Whole, deseja que o jogador aposte contra a
máquina (que faz as vezes da banca) como descreveremos abaixo.

\begin{center}
  \emph{Das regras do jogo}
\end{center}

Daremos primeiramente a descrição do jogo como normalmente é jogado em ABUSA. 

\begin{itemize}
\item Antes de qualquer sorteio, o apostador aposta $x$ dólas (pronuncia-se
  dó-las) e a banca ``banca'' a aposta, ou seja, faz uma aposta de mesmo
  valor.  Ao final do jogo, o vencedor leva todo o dinheiro: $2x$ dólas.
  
\item Tanto a banca quanto o apostador são genericamente chamados de \emph{jogador}.
  
\item Dizemos que a \emph{pontuação} de um jogador é o total dos valores das
  cartas que foram sorteadas para este jogador.  Vence aquele jogador cuja
  pontuação for maior.  Em caso de empate, vence aquele que fez a pontuação
  com o menor número de cartas.  Caso ainda haja empate a banca embolsa o
  dinheiro.
  
\item A banca administra o baralho e sorteia, suponha que honestamente, as
  cartas.  Primeiro, tantas cartas quanto o apostador quiser; em seguida,
  tantas cartas quanto a banca desejar para si.
  
\item A cada novo sorteio, a carta sorteada é virada sobre a mesa de modo
  que o jogador e a banca a vejam.
    
\item O baralho possui quarenta cartas --- é um baralho comum em que foram
  retiradas as cartas oito, nove e dez de qualquer dos quatro náipes
  usuais\footnote{Dizem que o fabricante de baralhos já fabrica o baralho só
    com as $40$ cartas para não ter que jogar fora as $12$ restantes,
    contribuindo assim com a preservação das florestas de onde ecologicamente
    se extrai a celulose necessária.}.

\item O ás vale $1$, as figuras (rei, dama e valete) valem $\frac{1}{2}$, as
  demais cartas valem o número correspondente.
    
\item Caso a pontuação de um jogador supere $7\frac{1}{2}$, situação em que se
  diz que o jogador \emph{estourou}, o jogador perde automaticamente.
  
\item Após um jogo, o vencedor leva os $2x$ dólas apostados e os jogadores
  podem reiniciar outro jogo caso o apostador assim o deseje.
\end{itemize}

Veremos agora um exemplo de quatro jogos:
\begin{center}
  \begin{tabular}{||c|c|c|c|c||}
    \hline
    jogo    &  jogador   &   cartas             &  pontuação  &  situação final \\
    \hline
    \hline
    jogo 1  &  apostador &  ás, 3, dama, rei, 2  &
                          $1+3+\frac{1}{2}+\frac{1}{2}+2 = 7$ & apostador vence\\
    \cline{2-2}
            &  banca     &  4, 2, rei, 5        &
                          $4+2+\frac{1}{2}+5=11\frac{1}{2}$   & \\
    \hline
    jogo 2  &  apostador &  ás, 3, 6            &  $1+3+6=10$ & banca vence  \\
    \cline{2-2}
            &  banca     &                      &             & \\
    \hline
    jogo 3  &  apostador & ás, rei, 6           &
                          $1+\frac{1}{2}+6=7\frac{1}{2}$ & banca vence \\
    \cline{2-2}
            &  banca     & 7, valete            &  $7+\frac{1}{2}$ & \\
    \hline
    jogo 4  &  apostador & 7                    &       $7$     & apostador vence \\
    \cline{2-2}
            &  banca     & 7, ás                &  $7+1=8$ & \\
    \hline
    \hline
  \end{tabular}
\end{center}


  
\begin{center}
  \emph{Das estratégias de cada jogador}
\end{center}

Cada jogador possui um objetivo e uma estratégia.  O objetivo de cada jogador
é vencer.  Quanto às estratégias não são muito mais complicadas.

A estratégia do apostador é pedir que a banca sorteie uma nova carta para ele
enquanto achar necessário.  O apostador sabe que precisa ter a maior pontuação
possível, sem no entanto estourar.  Assim, adotaremos uma estratégia simples:
adotaremos um \texttt{teto} para o apostador.  Se sua pontação corrente for
menor que o \texttt{teto}, ele pede mais uma carta; caso contrário, ele diz à
banca que não quer mais nenhuma carta e, caso o jogador não tenha estourado,
ela passa a sortear cartas para si própria.

Quanto à estratégia da banca, é mais simples ainda.  Se o apostador não tiver
estourado, pois caso contrário a banca já terá ganho, ela vai sorteando cartas
para si enquanto a pontuação obtida não lhe garantir a vitória sobre o
apostador e houver ainda alguma chance de obter uma pontuação vencedora com um
novo sorteio.  Ao final, a banca terá feito uma pontuação que lhe garanta a
vitória sobre o apostador, ou terá estourado.

\begin{center}
  \emph{Da simulação}
\end{center}

O dono do cassino, Mr.\ Whole, decidiu contratar voc\^es
para construir um programa que simule o jogo de
suas máquinas de ``Seven n Half''.  Como vimos antes, o apostador joga
contra a máquina que por sua vez faz o papel da banca.

Por simplicidade\footnote{Algumas línguas dizem que foi preguiça do
  programador.}, após sortear uma carta qualquer, o jogador em questão
contabiliza os pontos da carta que foi sorteada para si e \emph{a carta é
  devolvida ao baralho}.  O mesmo é então honestamente embaralhado antes de um
novo sorteio de uma carta, caso seja necessário.  Assim o sorteio de uma
segunda carta é completamente independente da carta sorteada na vez passada,
digo, na última vez.  Pode inclusive repetir-se a mesma carta.
    
\medskip

Primeiro, o programa deve inicializar uma variável de nome \texttt{passado} com o
valor real:

\hskip 4ex {\tt passado = 0.<seu número USP> \hfill /* exemplo:   passado = 0.5262199 */ }

\medskip

Depois deve ser feito o seguinte cálculo:

\hskip 4ex {\tt sorteio = ( 9821.0 * fabs( \emph{seno}(passado) ) + 0.211327 )}  \dotfill\ (1)

\hskip 4ex {\tt passado = sorteio - floor( sorteio )} \dotfill\ (2)

\medskip

\hskip 4ex onde {\tt fabs(x)} é uma função que devolve o módulo de {\tt x},

\hskip 9.5ex {\tt floor(x)} é uma função que devolve o maior inteiro não maior que 
{\tt x},

\hskip 9.5ex \parbox[t]{14.5truecm}{\emph{seno}\texttt{(x)} denota o valor
  calculado para o seno de \texttt{x} {\bf USANDO} o método descrito ao final
  deste exercício-programa.}

\medskip

As fórmulas em (1) e (2) (nesta ordem) nos fornecem um número no intervalo
$[0,1[$. Para obtermos um número inteiro entre 1 e 10 basta fazer a
seguinte conta:

\medskip

\hskip 4ex {\tt carta = floor( passado*10 + 1 );} \dotfill\ (3)

\medskip

Isto fornece-nos uma carta, sendo que $8$, $9$ e $10$ representam
respectivamente uma \emph{dama}, \emph{valete} e \emph{rei}.  Observe que os
náipes não interessam.  Sempre que for desejado um sorteio de uma carta, o
programa \textbf{DEVE} fazer as operações descritas nos passos (1), (2) e (3).

\medskip

Observe que durante as repetições da (1) e (2) o valor da variável \texttt{passado}
{\bf vai sendo alterado} e portanto os valores sorteados para as cartas vão
se alterando.

\medskip

Mr.\ Hole, digo Mr.\ Whole, deseja saber se a sua máquina de Seven \& Half
alferirá bons lucros, qualquer que seja a estratégia adotada pelo apostador.
Por isto, o dono do casino\footnote{A mãe de Mr.\ Rule é italiana e ele viveu
  um tempo em Nápoli.} contratou o supra-sumo das turmas supra-citadas para
fazer um programa em C que simule os jogos de suas máquinas.  Seu programa
deve testar as estratégias do apostador e da banca \textbf{CONFORME} descrito
anteriormente, para todos os valores possíveis que \texttt{teto} possa
assumir.  Para cada valor de \texttt{teto}, de $0$ a $7\frac{1}{2}$, o
programa deve simular $100$ jogos e computar em quantos jogos o apostador
venceu.  Chamemos de \texttt{derrotas} o número de vezes que o apostador
venceu (portanto o número de vezes que a máquina de Mr.\ Hole Rule Whole
perdeu).  Para cada um destes testes com \texttt{teto}, o programa deve
imprimir uma linha dizendo qual valor de \texttt{teto} está sendo considerado,
quantas vezes o apostador venceu (o valor de \texttt{derrotas}) e em seguida
tantos caracteres \texttt{'*'} quanto for o valor de \texttt{derrotas}.  Se
para \texttt{teto=4.5} e \texttt{teto=5} os valores encontrados de
\texttt{derrotas} forem respectivamente 20 e 29, deverão ser impressas linhas
como as abaixo:
\begin{verbatim}
4.5  20 ********************
5.0  29 *****************************
\end{verbatim}


\vskip 1cm

\noindent {\large \bf IMPORTANTE:} Todo exercício-programa deve seguir as
observações contidas nos folhetos distribuídos a parte. Nestes folhetos estão
descritas as diretrizes para a forma de entrega do exercício, aspectos
importantes na avaliação, etc.  Para calcular os valores do
\emph{seno}\texttt{(x)} {\bf USE OBRIGATORIAMENTE} a seguinte aproximação:
\[ \mbox{seno}(x) = \frac{x}{1!} - \frac{x^3}{3!} + \frac{x^5}{5!} -
  \frac{x^7}{7!} + \cdots + \frac{ (-1)^k x^{2k+1}}{(2k+1)!} + \cdots 
\]
incluindo na soma todos os termos enquanto
\[ \frac{|x^{2k+1}|}{(2k+1)!} \geq 10^{-8}.
\] 

\end{document}

