Buenas a todos,
Me estoy leyendo un libro de programación y tengo que hacer un ejercicio que es de hacer un programa que simule barajar cartas.
Resulta que al pasar los dos arrays de punteros que contienen los nombres de las cartas me da error al compilar.
El error es :
-----------------------------------------------------------------------------------------------------------------------
barajar-naipes.c: In function ‘main’:
barajar-naipes.c:18:3: warning: passing argument 2 of ‘mostrarBaraja’ from incompatible pointer type [enabled by default]
barajar-naipes.c:7:6: note: expected ‘const char **’ but argument is of type ‘char **’
barajar-naipes.c:18:3: warning: passing argument 3 of ‘mostrarBaraja’ from incompatible pointer type [enabled by default]
barajar-naipes.c:7:6: note: expected ‘const char **’ but argument is of type ‘char **’
------------------------------------------------------------------------------------------------------------------------
El código C es :
-----------------------------------------------------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void barajar(int [][13]);
void resetBaraja(int [][13]);
void mostrarBaraja(int [][13], const char *[], const char *[]);
int main()
{
int baraja[4][13] = {0};
char * carta[13] = {"As", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve", "Diez", "Jack", "Reina", "Rey" };
char * palo[4] = {"Picas", "Treboles", "Corazones", "Diamantes"};
srand(time(NULL));
resetBaraja(baraja);
barajar(baraja);
mostrarBaraja(baraja, carta, palo);
return 0;
}
void mostrarBaraja(int baraja[][13], const char *carta[], const char *palo[])
{
char row, column, leftCard;
for ( leftCard = 0 ; leftCard < 53 ; leftCard++ )
for ( row = 0 ; row < 4 ; row++ )
for ( column = 0 ; column < 13 ; column++ )
if ( baraja[row][column] == leftCard ) {
printf("%5s de %-8s %c", carta[column], palo[row], leftCard % 2 ? '\n' : '\t' );
getchar();
row = column = 20;
}
}
void barajar(int baraja[][13])
{
char carta, palo, i;
for (i = 0 ; i < 53 ; i++ ) {
carta = rand() % 14;
palo = rand() % 5;
if ( baraja[palo][carta] != -1 )
i--;
else
baraja[palo][carta] = i;
}
return;
}
void resetBaraja(int baraja[][13])
{
char i, j;
for ( i = 0 ; i <= 3 ; i++ )
for ( j = 0 ; j <= 13 ; j++ )
baraja [j] = -1;
}
------------------------------------------------------------------------------------------------------------------------
Gracias por adelantado.