Halmen 0 Denunciar post Postado Outubro 21, 2008 Ola pessoal eu gostaria que alguem me ajudasse a melhorar o meu programa que estou fazendo. Ele funciona mas so que eu quero que as cartelas com numeros não ficam repetidos. Porque sempre que gera a cartela os numeros se repetem. Me ajudem por favor. Um grande abraço a todos. Esse é meu programa. Tentem analizar. #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(); /*Declaracao de todas as funcoes.*/ void regras(void); void inicio(void); void main(void) /*Inicio do main*/ { /*Declaracao de variaveis*/ 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 onde rodam todos os jogaroes e*/ { /*preenchem a qnde de cartelas com seus numeros*/ textcolor(11); cprintf("\nQual seu nome jogador? "); scanf("%s", &jogador[j][NOME]); printf("\nSeu numero de cartela(s) sera sorteado.\n"); printf("\n"); cart[j] = randcart(); /*Numero de cartelas eh 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 sao sorteados*/ textcolor(4); printf("-%d-", cartao[j][l][c]); } printf("\n"); } getch(); clrscr(); } inicio(); /* primeira declaracao desta funcao: cria um placar de enfeite*/ textcolor(4); 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 eh:\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(); textcolor(11); gotoxy(8,8); cprintf("Precione qualquer tecla para comecar o jogo"); getche(); clrscr(); inicio(); gotoxy(4,8); /*Chama as regras do jogo, se o usu rio desejar*/ cprintf("Quer estudar as regras do jogo(S-N)? "); if((op = getche()) == 's' || (op = getche()) == 'S') { clrscr(); regras();} /*Funcao para escrever as regras*/ 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); /*Observe a funcao inicio() sempre sendo requisitada*/ 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 eh: %d", n+1, bola); /*na variavel 'bola'*/ getche(); clrscr(); inicio(); for(j = 0; j < JOG; j++) { /*Laco triplo: permite comparar desde o*/ for(l = 0; l < cart[j]; l++) { /*primeiro numero da primeira cartela*/ for(c = 0; c < COL; c++) { /*do primeiro jogador, com cada bola sorteada*/ teste = verifica(j,l,c,bola,cartao);/*Funcao que compara*/ if(teste == 's') vetorsoma[j][l][c] = 1; /*Aqui, eh 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; }/*Dado novo valor para a variavel, para laco n se repetir*/ 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 do programa principal. Fim do main().*/ void inicio(void) { /*Funcao sempre requisitada*/ textcolor(14); /*Imprime uma tela especial*/ gotoxy(28,2); cprintf("=========================\n"); gotoxy(28,3); cprintf("||----JOGO DO BINGO----||\n"); gotoxy(28,4); cprintf("=========================\n"); } void regras(void) { /*Funcao que imprime as regras do jogo*/ textcolor(14); gotoxy(28,2); cprintf("=========================\n"); gotoxy(28,3); cprintf("||----REGRAS DO JOGO----||\n"); gotoxy(28,4); cprintf("=========================\n"); textcolor(11); gotoxy(1,7); printf("Os premios do jogos sao: Quadra, Linha, Bingo e Acumulado\n\n\n"); printf("Quadra: O primeiro jogador a preencher 4 numeros horizontais\n "); printf("de qualquer das linhas da cartela, premio R$100,00\n\n\n"); printf("Linha: O primeiro jogador a preencher os 5 numeros horizontais\n "); printf("de qualquer das linhas da cartela, premio R$ 120\n\n\n"); printf("Bingo: O primeiro jogador a preencher todos os numeros da cartela, premio R$300,00\n\n\n"); printf("Acumulado: O primeiro jogador a preencher a cartela até a 40a bola, premio R$400,00\n\n\n"); printf("\n\n\n"); gotoxy(3,30); cprintf("Digite qualqer tecla para continuar"); getche(); } int randnume() { /*Funcao que sorteia os numeros dos cartoes*/ int numero; /*Retorna inteiros*/ numero = random(90)+1; return(numero); } int randcart() { /*Funcao que sorteia a qnde de cartoes*/ int cart; /*Retorna inteiro*/ cart = random(2)+1; return(cart); } int numbola() { /*Funcao que escolhe um numero de 1 a 90*/ 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*/ Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 21, 2008 e c você jogar os numeros q forem sendo gerados em um vetor... assim qnd fosse gerar ele iria verificar c o numero jah existe, c existe gera outro. -- outra coisa naum me lembro onde peguei esse código da net, + deixei ele guardado aki cmg :lol: veja: #include <iostream> #include <conio.h> #include <vector> #include <cstdlib> using namespace std; vector<int> lista; main(){ for( int i = 1; i <= 60; i++ ) { lista.push_back(i); } srand((unsigned) time(NULL)); int vetor_sorteados[5]; int numSorteados = 0; while( numSorteados < 5 ) { int s = rand() % lista.size(); vetor_sorteados[numSorteados] = lista[s]; lista.erase(lista.begin() + s); numSorteados++; } for( int i = 0; i < numSorteados; i++ ) cout << vetor_sorteados[i] << " "; getch(); } []'s Compartilhar este post Link para o post Compartilhar em outros sites