(Ayuda) Matriz en c.

Iniciado por minion123456789, 5 Junio 2015, 15:44 PM

0 Miembros y 1 Visitante están viendo este tema.

minion123456789

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.

engel lex

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;
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

minion123456789

#2
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

rir3760

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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language