Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá a todos,
Estou tentando desenvolver um programa para o jogo dos quinze e de início preciso inicializar um vetor(ou matriz) com 16 elementos e preenche-lo com números aleatórios entre 1 e 16. Da primeira maneira que tentei fazer, os números se repetiam ai pensei em criar uma função recursiva que testa-se se o número gerado aleatoriamente se repetia no vetor e em caso positivo, a função chamava a si própria até que o número aleatório gerado fosse diferente dos elementos já preenchidos do vetor.
Porém, minha lógica não deu certo e ele gera um erro de segmentation fault. Se alguém puder fazer algum apontamento sobre onde minha lógica falha ou mesmo dar uma outra sugestão desde já agradeço. Segue abaixo o código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define TAM 16
int inicializa(int v){
int i,j;
for(i = 0;i< TAM; i++){
v[i] = 0;
}
for(i = 0;i< TAM; i++){
v[i] = preencheVetor(v,i);
}
}
int preencheVetor(int *v,int l){
int r,i,j=0;
srand((unsigned int)time((time_t *)NULL));
r = 1 + (int) (TAM * ((float)rand()/(float)INT_MAX));
for(i = 0 ; i <= l; i++){
if(v[i] == r){
j++;
}
}
if(j == 0)
return r;
else
return preencheVetor(v,l);
}
int main()
{
int vetor[TAM], i;
inicializa(vetor);
for(i =0 ; i < TAM ; i++){
if(i == 4 || i == 8 || i == 12)
printf("\n");
printf("%d ",vetor[i]);
}
}Carregando comentários...