Autor
|
Tema: Duda acerca de matriz en c++ (Leído 5,407 veces)
|
laura_55
Desconectado
Mensajes: 5
|
Hola a todos mi nombre es Laura y soy nueva por aquí, espero que todos estén bien. Mi duda es la siguiente yo quiero crear una matriz con ciertos elementos. Luego de llenarla quiero poder un elemento de mi matriz posición por posición según lo que ingrese el usuario, sea norte, sur, este, oeste, para así ir acumulando un puntaje. Yo cree el siguiente código pero no me funciona y no se que estoy haciendo mal. Disculpen la molestias y entiendan que soy principiante por lo que debo de tener los errores mas estúpidos, solo les muestro el norte porque mi código esta hecho un desastre y es muy largo, y como siempre se repite lo mismo quiero saber que tengo mal y así poder arreglarlo en los demás. Gracias de antemano, y sean un poco pacientes todavía soy principiante. #include <iostream> #include <string> char matriz[20][20]; using namespace std; //---------------------------------------------------------------------- float Puntaje(int x, int y){ float Pts; if (matriz[x][y]=='$'){ Pts=1.0; }else if (matriz[x][y]=='%'){ Pts=1.5; }else if (matriz[x][y]=='&'){ Pts=2.0; } return Pts; } //---------------------------------------------------------------------- void Mover_posicion( int fil, int col, char matriz[][20]){ bool estado=false; int i,j,c,pasos,x,y,l,m,Ac; string mov; do{ for( i=0;i<fil;i++){ for( j=0;j<col;j++){ if(matriz[i][j]=='I'){ x=i; y=j; } if(matriz[i][j]=='F'){ l=i; m=j; } } } cin>>mov>>pasos; for(c=0;c<pasos;c++){ if(mov=="N"){ if((x-pasos) < 0){ Ac=Ac + Puntaje(x,y); if(matriz[x][y]==matriz[l][m]){ for (i = 0; i < fil; i++){ for ( j = 0; j < col; j++) cout << matriz[i][j] << " "; cout << endl; } }else{ matriz[x][y] = matriz[x][y]; matriz[x][y] = '#'; if(matriz[i][j]=='I' && matriz[x][y]!='|' ){ for (x = 0; x < fil; x++){ for ( y = 0; y < col; y++) cout << matriz[x][y] << " "; cout << endl; } }else if(matriz[x--][y]!='|'){ for (i = 0; i < fil; i++) { for ( j = 0; j < col; j++) cout << matriz[i][j] << " "; cout << endl; } } } } x--; } } if(matriz[x][y]==matriz[l][m]){ estado=true; } }while(estado!=true); cout<<"Ha llegado"<<"su acumulado es:"<<Ac<<endl; } //---------------------------------------------------------------------- int main(){ int fil,col,i,j; cout<<"Ingrese filas y columnas"<<endl; cin>>fil>>col; for( i=0;i<fil;i++){ for( j=0;j<col;j++){ do{ cin >> matriz[i][j]; }while(matriz[i][j]!='I' && matriz[i][j]!='F' && matriz[i][j]!='$' && matriz[i][j]!='&' && matriz[i][j]!='|' && matriz[i][j]!='%'); } } Mover_posicion( fil, col, matriz); }
|
|
« Última modificación: 19 Mayo 2014, 09:52 am por Eternal Idol »
|
En línea
|
|
|
|
Blaster
Desconectado
Mensajes: 190
|
Mi duda es la siguiente yo quiero crear una matriz con ciertos elementos. Luego de llenarla quiero poder un elemento de mi matriz posición por posición según lo que ingrese el usuario, sea norte, sur, este, oeste, para así ir acumulando un puntaje.
Podrias explicar de forma mas clara que es lo que quieres hacer exactamente; la función Mover_posicion carece totalmente de consistencia que intentas hacer con ella Saludos
|
|
|
En línea
|
|
|
|
laura_55
Desconectado
Mensajes: 5
|
lo siento si no se entiende, estoy comenzando. Lo que yo intente hacer fue que según la coordenada que ingrese es el usuario (norte, sur, este, oeste) se mueva el carácter I tantas veces como lo indico el usuario. Ej si el usuario ingresa N 2, el carácter debería moverse nos espacios al norte y en su camino ir colocando el #. Yo trate de colocar el x-- para que fuera de posición en posición y así poder ir acumulando los puntos que hace la acción puntaje. Cambien le coloque un do while para que se saliera cuando la posición de I fuera igual a F, se saliera y me escribiera el mensaje de ha llegado y de cuanto es mi acumulado. Lo siento si mi código es un desastre solo que parece que las matrices y yo no nos llevamos. No se, si estoy responde a tu pregunta
|
|
|
En línea
|
|
|
|
|
Blaster
Desconectado
Mensajes: 190
|
Lo que yo intente hacer fue que según la coordenada que ingrese es el usuario (norte, sur, este, oeste) se mueva el carácter I tantas veces como lo indico el usuario. Ej si el usuario ingresa N 2, el carácter debería moverse nos espacios al norte y en su camino ir colocando el #.
Te dejo un sencillo codigo que hace exactamente lo que pides, que es mover un elemento de la matriz hacia arriba la cantidad de posiciones que el usuario indique y rellenar el hueco dejado con '#'if (mov == 'N' && x-pasos >= 0){ matriz[x-pasos][y] = matriz[x][y]; for (i = 0; i < pasos; i++ ) matriz[x-i][y] = '#'; }
Yo trate de colocar el x-- para que fuera de posición en posición y así poder ir acumulando los puntos que hace la acción puntaje. Cambien le coloque un do while para que se saliera cuando la posición de I fuera igual a F, se saliera y me escribiera el mensaje de ha llegado y de cuanto es mi acumulado.
Que quieres hacer con estos caracteres I F $ & | % y con la condición de do while no entiendo a que quieres llegar Saludos
|
|
« Última modificación: 19 Mayo 2014, 23:09 pm por Blaster »
|
En línea
|
|
|
|
laura_55
Desconectado
Mensajes: 5
|
Bueno con el do while del int main lo que quiero es que el usuario llene la matriz solo con los caracteres I F $ & | % . Y el do while de la acción mover posición lo que hace es que cuanto la posición donde esta el carácter I es igual a F mi variable estado se vuelve verdad por lo que se sale y me imprime el mensaje ha llegado con el acumulado de los puntos de las posiciones por donde paso el carácter I. No se, si eso responde a tu pregunta, pero eso es lo que intento hacer y gracias por tratar de ayudarme a todos.
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
... lo que hace es que cuanto la posición donde esta el carácter I es igual a F mi variable estado se vuelve verdad ... Posición del carácter I igual a F ???? ¿¿¿??? Perdón por el comentario, pero te explicas como un libro cerrado
|
|
|
En línea
|
|
|
|
laura_55
Desconectado
Mensajes: 5
|
si, lo siento de verdad trata de explicar lo mejor que puedo pero las palabras no salen como debería. Lo que trato de decir es que a medida que mi carácter va subiendo y en el numero de pasos que indico llega al caracter F, es decir, la posición del carácter I pasa a ser la misma que el F. El se sale y no pide mas paso, para eso es el do while. Espero que me entienda, ya se que no debo ser profesora explico pésimo.
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
A ver si me entero.
* Tienes una matriz con valores determinados, entre ellos al menos una I y una F.
* Se elige una I y se le van pidiendo al usuario una serie de pasos. Cada paso desplaza I por la matriz.
* Si en uno de los pasos resulta que I va a estar ubicada en la posición donde se encuentra una F el programa deja de pedir más pasos
¿Es así?
Si estoy en lo cierto, tengo algunas dudas:
* Solo hay una I y una F o puede haber varias de cada una??
* Si se desplaza I por la matriz... que valor se pone en el espacio que queda vacío? Si I está en (1,0) y se mueve a (2,0), qué valor se pone en (1,0)??
Si no estoy en lo cierto, deberías replantearte un pequeño esfuerzo adicional para que se entienda el problema.
Un saludo.
|
|
|
En línea
|
|
|
|
laura_55
Desconectado
Mensajes: 5
|
En cuanto a tus preguntas: *El usuario solo va a ingresar una I y una F. *Cuando se mueve se le coloca a la posición anterior el carácter #. Y de verdad discúlpenme si no se entiende lo que trato de explicar.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
duda con arrays o matriz?
Programación Visual Basic
|
ricardovinzo
|
4
|
4,002
|
10 Junio 2008, 23:36 pm
por CeLaYa
|
|
|
Duda - Buscar si existe una matriz dentro de otra matriz
Programación Visual Basic
|
EddyW
|
2
|
6,012
|
14 Agosto 2010, 06:18 am
por EddyW
|
|
|
duda resultado de matriz [resuelto y con for incluido :) ]
Programación C/C++
|
flony
|
7
|
4,664
|
16 Octubre 2010, 01:53 am
por Akai
|
|
|
Duda con la matriz de cadena en C.
Programación C/C++
|
orehmu
|
1
|
1,836
|
1 Abril 2015, 05:12 am
por rir3760
|
|
|
Duda con matriz
Programación C/C++
|
bistec
|
1
|
1,800
|
7 Abril 2017, 17:37 pm
por n-utz
|
|