Escolar Documentos
Profissional Documentos
Cultura Documentos
Programação II – 2015/2
2º Trabalho Computacional - Entrega: 26/11/2015
Jogo de Bingo
Desta forma, o formato de entrada dos dados no arquivo “entrada.txt” deve ser o
seguinte:
<nome1>
<idade1> <rg1> <cpf1>
<nome2>
<idade2> <rg2> <cpf2>
<nomeN>
<idadeN> <rgN> <cpfN>
FIM
000
Fulano de Tal
17 122321 92885664054
João da Silva
25 654321 98778998789
FIM
000
100.00 10 13
324 765
201 103
099 345
00
Note que a semente de cartela deve ser utilizada juntamente com as funções srand e
rand da biblioteca padrão <stdlib.h> de C para montar as cartelas de cada
participante em uma rodada, obedecendo a ordem de participantes apresentada no
arquivo “entrada.txt”. Assim, para cada rodada, o programa deve inicialmente usar a
função srand para definir a semente de geração aleatória com o valor lido da semente
de cartela correspondente àquela rodada. Então, para cada participante do jogo, na
sequência em que se encontra no arquivo “entrada.txt”, o programa deve utilizar
sucessivamente a função rand para gerar os números que farão parte da cartela do
participante. A cartela deve ser preenchida obrigatoriamente por linha, isto é,
preenche-se as casas da primeira linha, depois da segunda e assim por diante. O
programa deve garantir ainda que em uma mesma cartela não existem números
repetidos, desconsiderando, portanto, as repetições e substituindo-as pelo próximo
número gerado que não ocorre na cartela.
Tendo sido gerados todos os números de todas as cartelas de todos os participantes em
uma rodada, é possível começar o sorteio daquela rodada. A semente de sorteio
correspondente àquela rodada deve ser usada com a função srand para definir a nova
semente de geração aleatória. A partir daí, a função rand pode ser usada para gerar a
sequência de números sorteados em uma rodada. Não custa lembrar que uma rodada
se encerra quando algum participante obtém a premiação por completar a cartela.
Um exemplo de código que utiliza as funções rand e srand é apresentado a seguir.
Exemplo de programa que usa rand e srand:
#include <stdio.h> /* as funções rand() e srand() estão no cabeçalho stdlib.h */
#include <stdlib.h>
main() {
int i, max;
max = 50;
srand(100); /* inicializar o gerador de números aleatórios com a semente */
for (i=0; i<5; i++) {
printf("%d ", (rand() % max) + 1); /* para gerar números aleatórios de 1 a max */
}
return 0;
}
Note que, no programa do bingo, o intervalo de valores dos números gerados para as
cartelas e para os sorteios varia entre 1 e (nl*nc+10), onde os termos nl e nc indicam
respectivamente o número de linhas e colunas da cartela. Em outras palavras, o valor
de max utilizado no programa exemplo deve ser calculado pela expressão (nl*nc+10).
Observe ainda que, obrigatoriamente, uma cartela deve ter pelo menos 3 linhas e 3
colunas e, no máximo, 10 linhas e 12 colunas.
O programa deve gerar como resultado um arquivo texto denominado “saida.txt” com
duas listagens. Na primeira listagem devem ser apresentados os dados (nome, idade,
RG e CPF) de cada participante premiado juntamente com o valor acumulado de suas
premiações em todo o jogo. Essa listagem deve estar ordenada descrescentemente
pelo valor acumulado das premiações. Em caso de empate no valor acumulado das
premiações, ordenar os participantes empatados segundo a ordem crescente dos seus
cpfs.
A segunda listagem deve conter os dados (nome, idade, RG e CPF) dos participantes
não premiados durante todo o jogo. Essa listagem deve estar ordenada segundo a
ordem crescente dos cpfs dos participantes. Tanto na listagem de premiados quanto de
não premiados se deve pular uma linha entre os dados de cada participante. Um
exemplo da disposição dos resultados no arquivo “saida.txt” é mostrado a seguir:
Exemplo de arquivo “saida.txt”:
PREMIADOS:
Nome: Fulano de Tal
Idade: 17
RG: 122321
CPF: 92885664054
Prêmio: R$ 1729.34
NÃO PREMIADOS:
Observação importante:
Caso haja algum erro neste documento, serão publicadas novas versões e divul-
gadas erratas em sala de aula. É responsabilidade do aluno manter-se informado,
freqüentando as aulas ou acompanhando as novidades na página da disciplina na
Internet.
BOM TRABALHO!!!