elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 02:53  


Tema destacado: Únete al Grupo Steam elhacker.NET

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Problema con array de punteros al pasarlo como argumento en una fucnion (Solved)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con array de punteros al pasarlo como argumento en una fucnion (Solved)  (Leído 426 veces)
vikour92

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Problema con array de punteros al pasarlo como argumento en una fucnion (Solved)
« en: 4 Febrero 2012, 15:43 »

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.


« Última modificación: 4 Febrero 2012, 17:09 por vikour92 » En línea
naderST


Desconectado Desconectado

Mensajes: 467



Ver Perfil
Re: Problema con array de punteros al pasarlo como argumento en una función
« Respuesta #1 en: 4 Febrero 2012, 15:57 »

No son errores son warnings (advertencias) que te da el compilador, como veras estas pasando como parámetro en la función mostrarBaraja() un arreglo de tipo char * y el esperaba un arreglo de tipo const char *

PD: Trata de colocar el código en etiquetas GeSHi


En línea
vikour92

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Problema con array de punteros al pasarlo como argumento en una función
« Respuesta #2 en: 4 Febrero 2012, 16:12 »

¡Es verdad, gracias!, pero una cosa, estoy quiero recoger el valor como const char * porque el puntero apunta a datos constantes. ¿Eso no debería dar warning no?, ya que los datos no se cambiarán y ¿puedo hacer algo para que no aparezca el warning ?
En línea
naderST


Desconectado Desconectado

Mensajes: 467



Ver Perfil
Re: Problema con array de punteros al pasarlo como argumento en una función
« Respuesta #3 en: 4 Febrero 2012, 16:55 »

Para que no te aparezca el warning coloca el calificador const en estas declaraciones:

Código
 char * carta[13] = {"As", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve", "Diez", "Jack", "Reina", "Rey" };
char * palo[4] = {"Picas", "Treboles", "Corazones", "Diamantes"};
 
En línea
vikour92

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Re: Problema con array de punteros al pasarlo como argumento en una función
« Respuesta #4 en: 4 Febrero 2012, 17:09 »

Ok muchisimas gracias
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cómo definir en XDR una función que devuelve un array de punteros a char
Programación C/C++
Selfmastery 2 2,297 Último mensaje 1 Junio 2009, 04:28
por Eliptico
Duda con array de punteros a cadenas
Programación C/C++
Leo Gutiérrez. 2 1,730 Último mensaje 6 Diciembre 2009, 10:16
por nicolas_cof
cadenas y array con punteros
Programación C/C++
mapers 4 1,689 Último mensaje 29 Enero 2010, 00:46
por Leo Gutiérrez.
De un archivo con comandos a array ? (solved)
PHP
Diabliyo 3 1,133 Último mensaje 11 Enero 2011, 23:12
por WHK
Array de punteros.
Programación C/C++
soyloqbuskas 3 236 Último mensaje 30 Enero 2012, 20:28
por soyloqbuskas
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines