Fiz um código para o problema abaixo, mas parece que minha lógica está com algum furo. Já revisei, e não entendo o porque ainda tenho números repetidos. Alguém consegue me dar uma força? Obrigado!!
A lógica que eu pensei do código é a seguinte: Eu preencho um campo da matriz, com "i" e "j" e comparo com os anteriores, com "k" e "z". Caso este campo que acabei de preencher seja igual a um campo anterior, eu volto uma posição e começo o FOR novamente. Para isso, eu utilizei 4 variáveis i,j,k,z & um "aux" que serve como minha condicional para parada.
Importante: Eu fiz o código com uma matriz 4x4 para testá-lo. Depois vou replicar para uma matriz 99x99.
Segue o problema: Faça um programa para gerar automaticamente números entre 0 e 99 de uma cartela de bingo. Sabendo que cada cartela deverá conter 5 linhas e 5 números, gere estes dados de modo a não ter números repetidos dentro da cartela.
Segue o Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main () {
int M[4][4], i,j,k,z, aux = 0;
srand(time(NULL));
for(i=0;i<4;i++){
for(j=0;j<4;j++){
aux = 0;
M[i][j] = 1+ rand() % 16;
for(k = i; k >= 0; k--){
if(aux == 1){
j = j - 1;
break;
}
for(z = j; z >= 0; z--){
if((M[k][z] == M[i][j] && k != i && z != j)){
aux = 1;
break;
}
}
}
}
}
printf("\n\n\n\n");
for(i=0;i<4;i++){
for(j=0;j<4;j++){
printf("%d\t", M[i][j]);
}
printf("\n");
}
return 0;
}
Pergunta
renan_j
Oi pessoal, boa tarde.
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.