Para evitar ese "rosario" de if, yo usaría un par de arrays que recojan el palo y el valor de la carta, algo como:
donde con las operaciones " % " y " / " obtendría del valor de la carta el palo y su valor.
Y después de barajar, como te comentó anteriormente eferion, el reparto, suponiendo como planteas cuatro jugadores, haría algo como:
para obtener una salida como:
Código (cpp) [Seleccionar]
const char *palo[4] = { "Corazones", "Diamantes", "Treboles", "Picas" };
const char *valor[13] = { "As", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve","Diez", "Jack", "Reina", "Rey" };
donde con las operaciones " % " y " / " obtendría del valor de la carta el palo y su valor.
Y después de barajar, como te comentó anteriormente eferion, el reparto, suponiendo como planteas cuatro jugadores, haría algo como:
Código (cpp) [Seleccionar]
int carta;
for( carta = 0 ; carta < 20; carta++){
if ( carta %10 == 0 )
putchar('\n');
printf("\t%7s de %-9s%c", valor[baraja[carta] % 13], palo[baraja[carta] / 13], ( carta+1 ) %2 == 0 ? '\n' : '\t');
}
para obtener una salida como:
Código (cpp) [Seleccionar]
Seis de Corazones Diez de Corazones
Rey de Treboles As de Picas
As de Treboles Nueve de Treboles
Dos de Picas As de Corazones
Dos de Treboles Cuatro de Treboles
Cinco de Corazones Siete de Picas
Reina de Diamantes Siete de Treboles
Diez de Diamantes Jack de Diamantes
Dos de Diamantes Tres de Picas
Reina de Corazones Cuatro de Diamantes
¡¡¡¡ Saluditos! ..... !!!!