Autor
|
Tema: Duda del desplazamiento de los elementos de una matriz(norte,sur,este,oeste) (Leído 6,261 veces)
|
xuhipoint
Desconectado
Mensajes: 13
|
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) #include <iostream> #include <string> char matriz[20][20]; using namespace std; int main(){ int fil,col,pasos,i,j,x,y; string Mov; cout<<"Ingrese filas y columnas"<<endl; cin>>fil>>col; cin>>Mov>>pasos; for( i=0;i<fil;i++){ for( j=0;j<col;j++){ do{ cout<<"["<<i<<"]"<<"["<<j<<"]"<<endl; cin >> matriz[i][j] ; }while(matriz[i][j]!='R' && matriz[i][j]!='S' && matriz[i][j]!='#' && matriz[i][j]!='*' && matriz[i][j]!='@' && matriz[i][j]!='/'); } } if(Mov=="N"){ if(matriz[i][j]=='R'){ x=i; y=j; for (i = 0; i < fil; i++) { for ( j = 0; j < col; j++) cout << matriz[x-pasos][j] << " "; cout << endl; } } } }
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
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
Mensajes: 13
|
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
Mensajes: 190
|
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:switch(mov) { case 'N': if (x - pasos >= 0) m[x-pasos][y] = m[x][y], m[x][y] = '.'; break; case 'S': if (x + pasos <= f-1) m[x+pasos][y] = m[x][y], m[x][y] = '.'; break; case 'E': if (y - pasos >= 0) m[x][y-pasos] = m[x][y], m[x][y] = '.'; break; case 'O': if (y + pasos <= c-1) m[x][y+pasos] = m[x][y], m[x][y] = '.'; break; }
Saludos
|
|
« Última modificación: 14 Mayo 2014, 20:24 pm por Blaster »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Intercambiar elementos de lugar en una matriz
Programación C/C++
|
binaryum
|
4
|
8,472
|
25 Julio 2010, 22:15 pm
por mk_137
|
|
|
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
|
EddyW
|
2
|
6,007
|
14 Agosto 2010, 06:18 am
por EddyW
|
|
|
[Python] Sumatorio de elementos adyacentes en una matriz [SOLUCIONADO]
Scripting
|
eLank0
|
8
|
10,453
|
14 Marzo 2013, 23:27 pm
por MCKSys Argentina
|
|
|
Sumar los elementos de una fila de una matriz en Pythong
Dudas Generales
|
Matinegro
|
1
|
2,813
|
10 Noviembre 2013, 20:41 pm
por crazykenny
|
|
|
Duda, sumar elementos en torno a un punto de la matriz en C
Programación C/C++
|
MrDude
|
1
|
2,635
|
8 Julio 2015, 10:19 am
por vangodp
|
|