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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda del desplazamiento de los elementos de una matriz(norte,sur,este,oeste)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda del desplazamiento de los elementos de una matriz(norte,sur,este,oeste)  (Leído 5,891 veces)
xuhipoint

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Duda del desplazamiento de los elementos de una matriz(norte,sur,este,oeste)
« en: 14 Mayo 2014, 03:43 am »

Hola a todos espero que estén bien, como lo escribí en el titulo tengo una duda de como mover un elemento de una matriz en forma norte,sur,este,oeste,noreste...Les adjunto mi código para que vean mi idea, quizás este pésima pero según mi lógica debería funcionar. Mi idea consiste en declarar dos variables para guardar la posición de la matriz y si mi matriz es igual al carácter que deseo mover, en este caso r, muevo la matriz la cantidad de pasos que ingrese el usuario. Mi código solo tiene norte porque como mi idea no me funciona quería saber que tengo malo para luego continuar, mi idea es si va al norte restar las filas, al sur sumar filas, este sumar columnas y oeste restar, espero que logren entender que es lo que trato de hacer el código es el siguiente: (Y disculpen si escribo mucho solo intento que mi idea se entienda)

Código
  1. #include <iostream>
  2. #include <string>
  3. char matriz[20][20];
  4. using namespace std;
  5. int main(){
  6. int fil,col,pasos,i,j,x,y;
  7. string Mov;
  8. cout<<"Ingrese filas y columnas"<<endl;
  9. cin>>fil>>col;
  10. cin>>Mov>>pasos;
  11. for( i=0;i<fil;i++){
  12. for( j=0;j<col;j++){
  13. do{
  14. cout<<"["<<i<<"]"<<"["<<j<<"]"<<endl;
  15.        cin >> matriz[i][j] ;
  16.  
  17. }while(matriz[i][j]!='R' && matriz[i][j]!='S' && matriz[i][j]!='#' && matriz[i][j]!='*' && matriz[i][j]!='@' && matriz[i][j]!='/');
  18. }
  19. }
  20.  
  21. if(Mov=="N"){
  22. if(matriz[i][j]=='R'){
  23. x=i;
  24. y=j;
  25. for (i = 0; i < fil; i++)
  26.    {
  27.        for ( j = 0; j < col; j++)
  28.           cout << matriz[x-pasos][j] << " ";
  29.        cout << endl;  
  30. }
  31.  
  32. }
  33. }
  34. }


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Duda del desplazamiento de los elementos de una matriz(norte,sur,este,oeste)
« Respuesta #1 en: 14 Mayo 2014, 08:17 am »

Efectivamente la idea es confusa y hay varias lagunas en tu planteamiento:

* La matriz no se puede mover... se pueden mover sus valores. No queda claro si sólo quieres mover un carácter o todos ellos.

* ¿Por qué en el caso de mover al norte el carácter elegido es 'R'?

* Si desplazas un carácter, por ejemplo, hacia el norte, es decir, hacia arriba, ¿Cómo se rellena el hueco que deja?

* ¿Qué significado tienen los caracteres que has definido como especiales ("R", "S", "*", "@", "/" ) ?

* ¿Cómo determinas las posiciones "x" e "y" al elegir un movimiento ( norte, sur, este y oeste ) ?


En línea

xuhipoint

Desconectado Desconectado

Mensajes: 13


Ver Perfil
Re: Duda del desplazamiento de los elementos de una matriz(norte,sur,este,oeste)
« Respuesta #2 en: 14 Mayo 2014, 14:22 pm »

Hola a todos, lo siento si mi idea es confusa. Intentare dejar lo mas claro lo que quiero hacer, yo no quiero mover toda la matriz sino un solo carácter de ellos que es 'R', para eso creo un condicional que si el usuario ingresaba en la variable Mov la letra 'N',luego cree otro condicional dentro de ese mismo para encontrar donde estaba el carácter 'R' que es el único que puedo mover asignándole las variables X y Y por eso le resto el numero de pasos ya que el norte es hacia arriba y las filas comienza de 0..N. Al mover la 'R' la posición pasa a ser sustituida por un '.', fue mi error no colocarlo pero estoy tan frustrada porque no se mueve que lo pase por alto. Acerca de los caracteres especiales esos son para rellenar mi matriz solo con esos caracteres y bueno la ultima pregunta no la entiendo muy bien pero lo que hice fue un condicional que si el usuario ingresa la letra 'N' en la variable movimiento, dentro de ese mismo condicional buscaba la posición de la letra 'R' y según el numero de pasos que ingresa el usuario por eso coloque x- pasos, ya que x representa mi fila en la posición donde se encuentra 'R' y pasos son con la cantidad de veces que quiero mover la 'R'. Espero que entienda mi idea, se que es un poco confusa pero es lo único que se me ocurrió para mover un elemento.
En línea

Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Duda del desplazamiento de los elementos de una matriz(norte,sur,este,oeste)
« Respuesta #3 en: 14 Mayo 2014, 18:21 pm »

Segun lo que entendi podrias hacerlo algo asi, suponiendo que ya tenemos ubicado el elemento a mover con las coordenadas (x, y) y con un if verificamos si el movimiento que el usuario quiere hacer no exceda el limite de la matriz  
Editado:

Código
  1. switch(mov)
  2. {
  3.      case 'N':
  4.          if (x - pasos >= 0)
  5.            m[x-pasos][y] = m[x][y], m[x][y] = '.';
  6.      break;
  7.      case 'S':
  8.          if (x + pasos <= f-1)
  9.            m[x+pasos][y] = m[x][y], m[x][y] = '.';
  10.      break;
  11.      case 'E':
  12.          if (y - pasos >= 0)
  13.            m[x][y-pasos] = m[x][y], m[x][y] = '.';
  14.      break;
  15.      case 'O':
  16.  if (y + pasos <= c-1)
  17.            m[x][y+pasos] = m[x][y], m[x][y] = '.';
  18.      break;
  19. }
  20.  

Saludos
« Última modificación: 14 Mayo 2014, 20:24 pm por Blaster » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines