Ola pessoal eu gostaria que voçes me ajudassem em uma função do meu programa para que não repetisse os
numeros da cartela dos jogadores. Sempre que eu rodo o programa aparece os mesmos numeros nas cartelas.
O programa esta ai. Está funcionando bem e só falta esse detalhe. Compilado no Turbo C. Abraço
/*Jogo do Bingo*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define SOMA 1
#define NOME 20
#define JOG 6
#define LIN 2
#define COL 15
int verifica(int jog, int linha, int coluna, int boll, int gamer[JOG][LIN][COL]);
int numbola();
int randnume();
int randcart();
void inicio(void);
//*---------------------------------Funcao Principal------------------------------
void main(void)
{
char op;
static int cartao[JOG][LIN][COL], cart[JOG];
static char jogador[JOG][NOME];
int l, c, n, j, bola, teste, vetorsoma[JOG][LIN][COL], soma[JOG][LIN], pausa;
int quadra, linha, bingo, acumulado;
clrscr();
for(j = 0; j < JOG; j++) /*Laco*/
{
cprintf("\nQual o nome do Jogador? ");
scanf("%s", &jogador[j][NOME]);
printf("\nSeu numero de cartela(s) sera sorteado.\n");
printf("\n");
cart[j] = randcart(); /*Numero de cartelas é sorteado*/
printf("\nJogara com %d cartelas\n", cart[j]);
for(l = 0; l < cart[j]; l++)
{
for(c = 0; c < COL; c++)
{
cartao[j][l][c] = randnume(); /*Numeros das cartelas são sorteados*/
printf("-%d-", cartao[j][l][c]); }
printf("\n");
}
getch();
clrscr();
}
inicio(); /* primeira declaracao desta funcao: cria um placar de enfeite*/
gotoxy(4,8);
printf("Entrem os participantes: ");
gotoxy(1,10);
for(j = 0; j < JOG; j++) /*Laco que imprime os participantes e suas cartelas*/
{
printf("Senhor(a) %s, sua cartela é:\n", &jogador[j][NOME]);
for(l = 0; l < cart[j]; l++)
{
printf("\n================================================================\n");
printf("||");
for(c = 0; c < COL; c++)
{
printf("-%d-", cartao[j][l][c]); } cprintf("||");
printf("\n================================================================\n");
printf("\n");
}
}
getch();
clrscr();
gotoxy(8,8);
cprintf("Precione qualquer tecla para comecar o jogo");
getche();
clrscr();
inicio();
getche();
clrscr();
inicio();
gotoxy(4,8);
cprintf("Vamos sortear as bolas. Boa sorte, jogadores!");
for(j = 0; j < JOG; j++) /*Laco duplo, para inicializar a variavel*/
{
for(l = 0; l < cart[j]; l++) {soma[j][l] = 0;}} /*soma[j][l]*/
quadra = 1; linha = 1; bingo = 1; acumulado = 1;
for(n = 0; n < 90; n++) /*Inicio das bolas e do jogo*/
{ /*Laco principal*/
getche();
clrscr();
inicio();
gotoxy(4,8);
cprintf("Vamos sortear as bolas. Boa sorte, jogadores!");
gotoxy(4,10);
bola = numbola(); /*Chama funcao que sorteia a bola e poe o resultado*/
cprintf("A %da bola é: %d", n+1, bola); /*na variavel 'bola'*/
getche();
clrscr();
inicio();
for(j = 0; j < JOG; j++)
{
for(l = 0; l < cart[j]; l++)
{
for(c = 0; c < COL; c++)
{
teste = verifica(j,l,c,bola,cartao); /*Funcao que compara*/
if(teste == 's') vetorsoma[j][l][c] = 1; /*Aqui, é criado um novo vetor,*/
else vetorsoma[j][l][c] = 0; /*vetorsoma[][][], onde sera de 1s e 0s*/
soma[j][l] += vetorsoma[j][l][c]; /*para todos os 1s serem somados*/
if(soma[j][l] == 4 && quadra)
{
gotoxy(2,15); /*Sendo a soma igual a 4, tem a quadra*/
cprintf("Senhor(a) %s diz: CONSEGUI, GANHEI A QUADRA!!!", &jogador[j][NOME]);
quadra = 0;
} /*Dado novo valor para a variavel, para laco n se repetir*/
else
if(soma[j][l] == 5 && linha)
{
gotoxy(2,15);/*Sendo a soma igual a 5, tem a linha*/
cprintf("Senhor(a) %s diz: CONSEGUI, GANHEI A LINHA!!!", &jogador[j][NOME]);
linha = 0;
}
else
if(soma[j][0] == 15 && bingo|| (soma[j][0]+soma[j][1]) == 30 && bingo)
{
gotoxy(2,15); /*Todos os numeros das cartelas preenchidos, temos bingo*/
cprintf("Senhor(a) %s diz: CONSEGUI, GANHEI O BINGO!!!", &jogador[j][NOME]);
bingo = 0;
} /*Dado novo valor para a variavel, para laco n se repetir*/
else
if(n <= 40 && soma[j][0] == 15 && acumulado || n == 40 && (soma[j][0]+soma[j][1] && acumulado) == 30)
{
gotoxy(2,15);/*Todos os numeros em 40 bolas, ou menos, acumulada*/
cprintf("Senhor(a) %s diz: CONSEGUI, GANHEI O ACUMULADO!!!", &jogador[j][NOME]);
acumulado = 0;/*Dado novo valor para a variavel, para laco n se repetir*/
pausa = 1;
} /*Entrando no laco da acumulada, d valor de 1 para "pausa"*/
}}}
if(pausa == 1)
{
gotoxy(2,20);
cprintf("FIM DE JOGO! PARABENS, VENCEDOR!!!");
goto Fim;
} /*Cursor vai para o "Fim:"*/
}
Fim:
getch();
}
//*--------------Fim da funcao Principal----------------------------------------
void inicio(void)
{
gotoxy(28,2);
cprintf("=========================\n");
gotoxy(28,3);
cprintf("||----JOGO DO BINGO----||\n");
gotoxy(28,4);
cprintf("=========================\n");
}
//*----------------------------Funcao sorteia numeros dos cartoes--------------------
int randnume()
{
int numero; /*Retorna inteiros*/
numero = random(90)+1;
return(numero);
}
//*-----------------funcao do sorteio da quantidade de cartoes------------------------
int randcart()
{
int cart; /*Retorna inteiro*/
cart = random(2)+1;
return(cart);
}
//*--------------------funcao escolhe um numero de 1 a 90------------------------------
int numbola()
{
int bola; /*Retorna este numero*/
bola = random(90)+1;
return(bola);
}
int verifica(int jog, int linha, int coluna, int boll, int gamer[JOG][LIN][COL])
{
if(gamer[jog][linha][coluna] == boll)
{
return('s');
} /*Funcao complexa. Compara a bola sorteada com o numero respectivo do cartao */
}
Pergunta
lhalmenschlager
Ola pessoal eu gostaria que voçes me ajudassem em uma função do meu programa para que não repetisse os
numeros da cartela dos jogadores. Sempre que eu rodo o programa aparece os mesmos numeros nas cartelas.
O programa esta ai. Está funcionando bem e só falta esse detalhe. Compilado no Turbo C. Abraço
Editado por kuroiAdicionar tag CODE
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.