elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] 3 4 5 Ir Abajo Respuesta Imprimir
Autor Tema: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]  (Leído 12,011 veces)
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #10 en: 1 Junio 2015, 20:26 pm »

Pero ahí no se usa X, me da un error de que no se está usando esa variable.
No entiendo para que la declaro?? (Osea, entiendo que la estoy usando y son las X que quiero me aparezcan en el tablero aleatoriamente, pero no veo donde las estoy usando, solo en 'X')

Acá arreglé el código (le puse tam/2, porque las X tienen que ser la mitad del tamaño elegido, pero algo está mal porque si le ingreso un tamaño 10 me tira cualquier numero de X ):

Código
  1. int main(){
  2.  
  3.   int tam=1;
  4.   char tablero[tam][tam];
  5.  
  6.   printf("Ingrese tamanio (6,8,10,14 o 18): ");
  7.   scanf(" %d", &tam);
  8.  
  9.   int i,j,X; //declaramos la variable X
  10.  
  11.   //Iniciando los valores del tablero a '.', esto tu lo puedes cambiar
  12.   for(i = 0; i < tam;i++)
  13.       for(j = 0; j < tam;j++)
  14.           tablero[i][j] = ' ';
  15.  
  16.   //generando las 3 X aleatoriamente
  17.   srand (time(NULL));
  18.   int Xnum = 0; //un contador
  19.   while(Xnum < 3){ //hasta que se generen las 3 Xs
  20.  
  21.       i = rand() % tam/2;   //el numero aleatorio depende del tamaño del tablero
  22.       j = rand() % tam/2;
  23.  
  24.       if( tablero[i][j] != 'X'){ //probamos si en esa posicion no existe alguna X
  25.           tablero[i][j] = 'X';   //agregamos una X
  26.           Xnum++; //aumentamos contador para no dibujar mas de 3 Xs
  27.       }
  28.  
  29.   }
  30.  
  31.   //imprimimos todo
  32.   printf("\n   ");
  33.   for (j=0;j<tam;j++)
  34.       printf(" %c ", 'a' + j);
  35.   printf("\n");
  36.  
  37.   for (i=0;i<tam;i++){
  38.  
  39.       printf("|%d|", i);
  40.  
  41.       for (j=0;j<tam;j++){
  42.          printf(" %c|", tablero[i][j]);
  43.       }
  44.  
  45.       printf(" \n");
  46.   }


« Última modificación: 1 Junio 2015, 20:36 pm por dragonlady » En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #11 en: 1 Junio 2015, 20:31 pm »

En tu código si la usas

Código
  1. for (X=0;X<3;X++)

Tienes que tener en cuenta de que estas usando una variable en ese bucle for, pero el 'X' es un caracter o sea es un valor que puede tomar una variable

No te confundas con la variable X y el caracter 'X' son diferentes, el primero es una variable y el segundo un valor que puede tomar una variable


« Última modificación: 1 Junio 2015, 20:35 pm por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #12 en: 1 Junio 2015, 20:37 pm »

Gracias por contestar! Ahí subí el código con las modificaciones.
Entonces, es un error de compilación? Porque me dice que no uso esa variable al compilar?
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #13 en: 1 Junio 2015, 20:45 pm »

Pues es que ya no está siendo utilizado, ya lo puedes quitar.


Acá arreglé el código (le puse tam/2, porque las X tienen que ser la mitad del tamaño elegido, pero algo está mal porque si le ingreso un tamaño 10 me tira cualquier numero de X ):

Código
  1.   //generando las 3 X aleatoriamente
  2.   srand (time(NULL));
  3.   int Xnum = 0; //un contador
  4.   while(Xnum < 3){ //hasta que se generen las 3 Xs
  5.  
  6.       i = rand() % tam/2;   //el numero aleatorio depende del tamaño del tablero
  7.       j = rand() % tam/2;
  8.  
  9.       if( tablero[i][j] != 'X'){ //probamos si en esa posicion no existe alguna X
  10.           tablero[i][j] = 'X';   //agregamos una X
  11.           Xnum++; //aumentamos contador para no dibujar mas de 3 Xs
  12.       }
  13.  
  14.   }
  15.  

SI quieres que las 'X's generadas sean la mitad del tamaño del tablero entonces:

Código
  1.  
  2.   srand (time(NULL));
  3.   int Xnum = 0;
  4.   while(Xnum < (tam/2)){ //Presta atención aquí
  5.  
  6.       i = rand() % tam;  
  7.       j = rand() % tam;
  8.  
  9.       if( tablero[i][j] != 'X'){
  10.           tablero[i][j] = 'X';  
  11.           Xnum++;
  12.       }
  13.  
  14.   }
  15.  
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #14 en: 1 Junio 2015, 21:01 pm »

Siguen sin aparecerme la mitad de tam de X



Algo debe suceder en esta parte que no está muy bien o algo porque no está cumpliendo su funcion:

Código
  1. Xnum++; //aumentamos contador para no dibujar mas de 3 Xs
« Última modificación: 1 Junio 2015, 21:19 pm por dragonlady » En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #15 en: 1 Junio 2015, 22:12 pm »

pero quieres que aparezca tam/2 veces X en todo el tablero o en cada columna?

No puedes hacer otro juego más fácil de entender?, algo así como un snake  :-\
« Última modificación: 1 Junio 2015, 22:14 pm por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #16 en: 1 Junio 2015, 22:24 pm »

jajaja si!! Realmente está hasta mal redactado la guia del juego que nos dieron (y es obligatorio, no podemos hacer otro), me metí a preguntar porque me quedé sin compañero para hacerlo (era de a 2) pero bueno!

En todo el tablero me tienen que aparecer la mitad de X que el tamaño del mismo.
Si es un tablero de 6x6, tienen que aparecer 3 X, si es uno de 14, 7 X y así :|
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #17 en: 1 Junio 2015, 22:28 pm »

Cuando ejecuto ésto:
Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5.   int tam = 8; //cambia este valor
  6.   char tablero[tam][tam];
  7.  
  8.   int i,j;
  9.  
  10.   //Iniciando los valores del tablero a '.', esto tu lo puedes cambiar
  11.   for(i = 0; i < tam;i++)
  12.       for(j = 0; j < tam;j++)
  13.           tablero[i][j] = '.';
  14.  
  15.   //generando las 3 X aleatoriamente        
  16.   srand (time(NULL));    
  17.   int Xnum = 0; //un contador        
  18.   while(Xnum < tam/2 ){ //hasta que se generen las 3 Xs
  19.  
  20.       i = rand() % tam;   //el numero aleatorio depende del tamaño del tablero
  21.       j = rand() % tam;
  22.  
  23.       if( tablero[i][j] != 'X'){ //probamos si en esa posicion no existe alguna X
  24.           tablero[i][j] = 'X';   //agregamos una X
  25.           Xnum++; //aumentamos contador para no dibujar mas de 3 Xs
  26.       }    
  27.  
  28.   }
  29.  
  30.   //imprimimos todo
  31.   printf("\n   ");
  32.   for (j=0;j<tam;j++)
  33.       printf("%c ", 'a' + j);
  34.   printf("\n");
  35.  
  36.   for (i=0;i<tam;i++){
  37.  
  38.       printf("%d  |", i);
  39.  
  40.       for (j=0;j<tam;j++){
  41.          printf(" %c", tablero[i][j]);
  42.       }
  43.  
  44.       printf(" \n");
  45.   }
  46. return 0;  
  47.   }

Me aparece:

Código:
   a b c d e f g h 
0  | . . . . . . . .
1  | . . . . . . . .
2  | . . . . . . . .
3  | . . X . . . . .
4  | X . X . . . . .
5  | . . . . . . . .
6  | . . . . . . . .
7  | . . X . . . . .

   a b c d e f g h
0  | . . X . . X . .
1  | . . . . X . . .
2  | . . X . . . . .
3  | . . . . . . . .
4  | . . . . . . . .
5  | . . . . . . . .
6  | . . . . . . . .
7  | . . . . . . . .


en un tablero 8x8, prueba con otros valores que sean pares
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
dragonlady

Desconectado Desconectado

Mensajes: 37



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #18 en: 1 Junio 2015, 22:33 pm »

Ahh!!! Entonces es un tema de inicializar tam. Porque yo lo inicializé en 1 (después probé con 0 y me da error igual) ya que le tengo que preguntar al usuario que el me ingrese de que tamaño va a ser el tablero, no es fijo.
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Dibujar e inicializar tablero de posibles distintos tamaños en C [?]
« Respuesta #19 en: 1 Junio 2015, 22:38 pm »

Puedes definir el tamaño solo una vez(lo define el jugador del juego), después el tablero tendrá ese tamaño hasta que termine el programa, si quieres cambiar el tamaño entonces tendras que saber manejar memoria dinámica.

Un saludo
« Última modificación: 1 Junio 2015, 22:40 pm por 0xFer » En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Páginas: 1 [2] 3 4 5 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Duda]Problema de tamaños
ASM
YST 3 3,249 Último mensaje 25 Junio 2009, 22:24 pm
por YST
Tablero java
Java
lulu2704 1 4,682 Último mensaje 23 Abril 2011, 05:11 am
por Castiblanco
tamaños swap
GNU/Linux
linuxos 4 2,303 Último mensaje 24 Octubre 2011, 17:54 pm
por orvtech
Detectar movimientos de piezas en tablero de ajedrez. « 1 2 »
Programación Visual Basic
E2E4 12 10,531 Último mensaje 4 Junio 2012, 09:29 am
por BlackZeroX
Más de 400.000 barcos de todos los tamaños vulnerables a ataques de ....
Noticias
wolfbcn 0 1,187 Último mensaje 27 Marzo 2014, 21:42 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines