Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: minion123456789 en 5 Junio 2015, 15:44 PM

Título: (Ayuda) Matriz en c.
Publicado por: minion123456789 en 5 Junio 2015, 15:44 PM
Buenas, una consulta estoy programando en c y necesito realizar lo siguiente y tengo una matriz de 6x6, que el numero 1 lo ingreso en matriz[0][0]='1', y luego quiero ingresarlo en una nueva fila y columna(lo voy a cambiar una cierta cantidad de veces) y quiero que se borre el 1 anterior y se guarde en la nueva fila y columna de la misma matriz.
Título: Re: (Ayuda) Matriz en c.
Publicado por: engel lex en 5 Junio 2015, 15:56 PM
muestra codigo y lo que intentas porque realmente no lo entiendo... tambien está pendiente

Código (cpp) [Seleccionar]
matriz[0][0]='1';

no es lo mismo que
Código (cpp) [Seleccionar]
matriz[0][0]=1;
Título: Re: (Ayuda) Matriz en c.
Publicado por: minion123456789 en 5 Junio 2015, 16:34 PM
Código (cpp) [Seleccionar]
//Cargo jugador-1
   matriz[0][0]='1';
   //Cargo jugador-2
   matriz[5][5]='2';
if(jugador%2==1)
       {
           system("clear");
           printf("\njugador 1");
           printf("\nIngrese coordenadas ej. (1-A) ");
           scanf("%d - %c",&fil,&col);
           fila = fil -1;// calculo la fila en base a la fila ingresada
           columna = (int)col-65; // calculo la columna en base a la letra mayuscula ingresada 65=A (INT)hace que la letra se pase a ASCII
           printf("\n%d %d",fila,columna); //  muestro las coordenadas que elegidas, ya transformadas en numeros
           if (matriz[fila][columna]=='2' || matriz[fila][columna]=='*')
           {
           printf("Jugador 1 se matiene en posicion\n");
           }

           else //para mover el 1 de posicion
           {
            for(i=0;i<fila;i++)
            {
                for(j=0;j<columna;j++)
                {
                    matriz[fila][columna]='1';
                }
            }
            printf("\n");
            tablero_1();


           }
           jugador++;//para pasar al otro jugador


       }

       else //SE UTILIZA PARA MOVER EL JUGADOR 2
       {
           system("clear");
           printf("\njugador 2");
           printf("\nIngrese coordenadas ej. (1-A) ");
           scanf("%d - %c",&fil,&col);
           fila = fil -1;// calculo la fila en base a la fila ingresada
           columna = (int)col-65; // calculo la columna en base a la letra mayuscula ingresada 65=A (INT)hace que la letra se pase a ASCII

               printf("\n%d %d",fila,columna); //  muestro las coordenadas que elegidas
       if (matriz[fila][columna]=='2' || matriz[fila][columna]=='*')
       {
            printf("Jugador 2 se matiene en posicion\n");
       }
           else//se utiliza para mover el 2 de posicion
           {
            for(i=0;i<fila;i++)
            {
                for(j=0;j<columna;j++)
                {
                    matriz[fila][columna]='2';
                }
            }


           }
           jugador++;//para pasar al otro jugador

       }

       break;


Mod: códigos deben ir en etiquetas GeSHi
Título: Re: (Ayuda) Matriz en c.
Publicado por: rir3760 en 8 Junio 2015, 18:14 PM
Cita de: minion123456789 en  5 Junio 2015, 15:44 PMtengo una matriz de 6x6, que el numero 1 lo ingreso en matriz[0][0]='1', y luego quiero ingresarlo en una nueva fila y columna(lo voy a cambiar una cierta cantidad de veces) y quiero que se borre el 1 anterior y se guarde en la nueva fila y columna de la misma matriz.
Para mover la pieza del jugador basta con sobrescribir la casilla actual con el indicador correcto (no lo indicas, bien puede ser un espacio) y escribir el carácter '1' en la nueva posición.

Lo mejor por sencillo es almacenar la posición actual y nueva del jugador en variables, con ello el fragmento termina, mas o menos, así:
if (matriz[fila][columna]=='2' || matriz[fila][columna]=='*'){
   printf("Jugador 1 se matiene en posicion\n");
} else { //para mover el 1 de posicion
   /*
   ** 1) Se libera la posicion actual
   ** j1_fila == Jugador 1 posicion actual, fila
   ** j1_col  == Jugador 1 posicion actual, columna
   */
   matriz[j1_fila][j1_col] = ' ';
   
   /* 2) Se coloca al jugador 1 en su nueva posicion */
   matriz[fila][columna] = '1';
   
   /* 3) Se toma nota de la nueva posicion */
   j1_fila = fila;
   j1_col  = columna;
}


Si no es posible por alguna razón (por ejemplo por los requisitos del enunciado) entonces hay que utilizar un par de bucles anidados para buscar el carácter que indique al jugador uno, sobrescribirlo con un espacio y colocar en la nueva posición un '1'.

Un saludo