Si nos pudieras decir qué es cada miembro de Partida, qué hace y cuáles son las condiciones de parada te podríamos ayudar mejor. Yo voy muy a ciegas.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes Menúvoid codigoAleatorio(tCodigo codigo, bool admiteRepetidos) {
unsigned i; // mi índice para el array.
unsigned j; // mi índice para un array auxiliar, ver mas abajo.
char c; // tendrá el elemento del código seleccionado.
char elementosCodigo[] = {'R', 'Z', 'V', 'A', 'M', 'B'}; // el array que contiene los elementos que conforman el código.
const unsigned TAM_ELEM_COD = 6; // 6 es el tamaño del array elementosCodigo. En verdad se debería sustituir 6 por 'sizeof(elementosCodigo) / sizeof(char)', pero por razones de que todavía no habrás avanzado lo suficiente en el curso lo dejo con el 6.
// Ahora voy a rellenar el array codigo que ha recibido la función.
for(i = 0; i < TAM_CODIGO; ++i) {
j = rand() % TAM_ELEM_COD;
// Ahora viene la parte donde trabajamos con si se admiten elementos repetidos o no.
if(!admiteRepetidos) { // Si no se admiten repetidos...
// La idea es cambiar el dato de elementosCodigo que ya se ha usado a 0, así sabremos que ese ya se ha pillado.
while((c = elementosCodigo[j]) == 0) { // Mientras encontremos que el elemento seleccionado ya ha sido escogido con anterioridad
++j; // Elegiremos el siguiente elemento.
if(j >= TAM_ELEM_COD); // Si el índice j queda fuera del array de código...
j = 0; // Se regresa el índice al inicio.
} // Terminado el while c tendrá un carácter válido y j estará sobre ese elemento que no se ha repetido.
elementosCodigo[j] = 0; // Para evitar que en posteriores búsquedas, para rellenar el array codigo, se elija de nuevo esta posición, se marca con el 0.
} // Como en el paso anterior ya tenemos un elemento del código válido podemos continuar. Nótese que si se admitieran repetidos la función es la misma, lo único que todo lo que hay dentro del if se puede omitir, por eso que se ha escrito de esta forma.
codigo[i] = c; // Se copia a la posición i del array codigo el carácter obtenido de elementosCodigo.
} // Terminado el for ya tenemos el código listo por tanto...
} // fin de la función.
for (int s = 0; s < TAM_CODIGO - 1; s++)