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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  recorrido de una matriz de forma recursiva
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: recorrido de una matriz de forma recursiva  (Leído 16,977 veces)
dark_headhunter

Desconectado Desconectado

Mensajes: 208


solo tu eres dueño de tu destino


Ver Perfil WWW
recorrido de una matriz de forma recursiva
« en: 10 Junio 2011, 07:22 am »

Hola amigos, estoy quemándome con un ejercicio que no consigo sacar:

Dada un punto cualquiera de una matriz (no importa la dimensión), por simplicidad pongamos 10x10, pues desde ese punto hacer un recorrido de forma recursiva, como si tirásemos una piedra a un lago por ejemplo , en el caso de sumar uno a cada nivel quedaría algo así:

              212
              101
              212

cada vez que aumenta x o y, suma uno, ¿Alguien puede ayudarme?


En línea

La informacion es nuestra arma, el anonimato nuestra armadura
Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: recorrido de una matriz de forma recursiva
« Respuesta #1 en: 10 Junio 2011, 14:49 pm »

No dices en que lenguaje así que te lo pongo en Pascal:

Código
  1. program Project1;
  2.  
  3. {$APPTYPE CONSOLE}
  4.  
  5. uses
  6.  SysUtils;
  7.  
  8. var
  9. x, y: integer;
  10. Matriz: array [0..9, 0..9] of integer;
  11. begin
  12.  
  13. for x := 0 to 9 do
  14.  for y := 0 to 9 do
  15.    begin
  16.      if Matriz[x, y] = 14 then
  17.        //Hacemos algo...
  18.    end;
  19. end.
  20.  

Es un bucle dentro de otro, así que recorrería todos los elementos de la matriz..

Saludos.


En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: recorrido de una matriz de forma recursiva
« Respuesta #2 en: 10 Junio 2011, 16:18 pm »

No se si te he entendido bien lo que quieres decir, pero si lo que pretendes es sumar en una unidad el resto de elementos que rodean a uno dada su posición X e Y sería sencillo. Si no es eso, y lo que quieres hacer es dada una posición X e Y recorrer el resto de la matriz sumando uno pero tomando como valor inicial el de la posición X e Y ya sería algo más complicado, pero se puede realizar, aclaralo un poco y te ayudaremos en lo posible.

Si la solución que buscas es la que ha propuesto Khronos14 entonces resuelto xD.

Saludos.
En línea

dark_headhunter

Desconectado Desconectado

Mensajes: 208


solo tu eres dueño de tu destino


Ver Perfil WWW
Re: recorrido de una matriz de forma recursiva
« Respuesta #3 en: 10 Junio 2011, 19:17 pm »

No me he explicado bien: Tiene que ser recursiva, si utilizáis algún lenguaje y podéis, C o alguno de sus deribados mejor.

No tiene por qué empezar en (0,0)

Os pongo mi código, que no me consigue funcionar, a ver si me lleváis hacia la Luz (es C#, Visual Studio 2010), pero para el caso, que es entender el algoritmo, es igual:

Código:
public void recursiva(int x, int y,int reg)
        {
            if (Matriz[x, y].color != Color.Black || Matriz[x, y].marcado == true)
            {
               
                Matriz[x, y].marcado = true;
                Matriz[x, y].region = reg;
                //acotamos para no salirnos fuera de rango

                if ((x > 0 || (x + 1 < formPrincipal.Cuadro.Image.Width)) &&(y > 0 || (y + 1 < formPrincipal.Cuadro.Image.Height)))
                {
                    recursiva(x + 1, y, reg);
                    recursiva(x - 1, y, reg);
           
                    recursiva(x, y + 1, reg);
                    recursiva(x, y + 1, reg);
                }
               
            }

        }
En línea

La informacion es nuestra arma, el anonimato nuestra armadura
Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: recorrido de una matriz de forma recursiva
« Respuesta #4 en: 10 Junio 2011, 23:39 pm »

Código
  1. private void Recursiva(ref int [,] matriz, int x, int y)
  2.        {
  3.            if (x >= 0 && x < matriz.GetLength(0) && y >= 0 && y < matriz.GetLength(1))
  4.            {
  5.                matriz[x, y]++;
  6.  
  7.                if (x == matriz.GetLength(0) - 1)
  8.                {
  9.                    x = 0;
  10.                    y++;
  11.                }
  12.                else
  13.                    x++;
  14.  
  15.                Recursiva(ref matriz, x, y);
  16.            }
  17.        }
  18.  

Me parece una función recursiva bastante simple.

Saludos.
« Última modificación: 10 Junio 2011, 23:42 pm por Khronos14 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
De forma recursiva « 1 2 3 »
Ejercicios
:ohk<any> 21 18,432 Último mensaje 5 Septiembre 2008, 18:54 pm
por carlitos.dll
Cargar una matriz de forma recursiva[c]
Programación C/C++
axeelcs 3 12,642 Último mensaje 1 Septiembre 2011, 20:43 pm
por LearningSpanishProgrammer
Recorrido de una Matriz
Java
Fabi0lo 3 3,889 Último mensaje 26 Octubre 2011, 00:46 am
por s00rk
MATRIZ que imprima como una matriz en forma de cuadrado... ayudaaaaa!! help
Programación C/C++
oscarpy 3 8,481 Último mensaje 9 Abril 2012, 16:23 pm
por Xandrete
Recorrido de matriz diagonal secundaria c++
Programación C/C++
SojatDotar 4 10,384 Último mensaje 21 Octubre 2015, 04:10 am
por SojatDotar
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines