Função troca em C/C++

demoven

Power Member
Boas. Alguém pode indicar o erro neste algoritmo? Objetivo é baralhar as cartas, gerando um "j" aleatório e trocando uma carta "i" com outra carta da posição random. Porém, está a dar break. Penso que o erro está na passagem dos argumentos. Obrigado
Código:
void baralhar(Carta baralho[40])
{
    char aux[40];
    int j=0;

    for(int i=0;i<40;i++)
    {
        j = rand() % 40;
        troca(&baralho[i],&baralho[j],i,j);
    }
}

Código:
void troca(Carta baralho[40],Carta baralho2[40], int i,int j)
{
    Carta aux[1]={ };

    aux[0].valor=baralho[i].valor;
    baralho[i].valor=baralho2[j].valor;
    baralho2[j].valor=aux[0].valor;

    strcpy(aux[0].naipe,baralho[i].naipe);
    strcpy(baralho[i].naipe,baralho2[j].naipe);
    strcpy(baralho2[j].naipe,aux[0].naipe);

    free(aux);
}
 
Back
Topo