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
/*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 */ }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.