Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOLUCIONADO] C# Recursividad: Problemas donde conviene aplicar la recursividad

  • 12 Respuestas
  • 2366 Vistas

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

Desconectado Noporfavor

  • *
  • Underc0der
  • Mensajes: 105
  • Actividad:
    0%
  • Reputación 0
  • Que el debil mate a todos, mis queridos angeles
    • Ver Perfil
« en: Agosto 31, 2016, 04:54:04 pm »
Hola,

antes de preguntar, les mostrare el codigo:

archivo: Form1.Designer.cs
Código: [Seleccionar]
namespace Laberinto
{
    partial class Form1
    {
        ///

        /// Variable del diseñador requerida.
        ///

        private System.ComponentModel.IContainer components = null;

        ///

        /// Limpiar los recursos que se estén utilizando.
        ///

        /// true si los recursos administrados se deben eliminar; false en caso contrario, false.
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Código generado por el Diseñador de Windows Forms

        ///

        /// Método necesario para admitir el Diseñador. No se puede modificar
        /// el contenido del método con el editor de código.
        ///

        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            //
            // button1
            //
            this.button1.Location = new System.Drawing.Point(11, 15);
            this.button1.name=%26quot%3Bbutton1%26quot%3B%3B
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 0;
            this.button1.Text = "Verificar";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            //
            // button2
            //
            this.button2.Location = new System.Drawing.Point(93, 15);
            this.button2.name=%26quot%3Bbutton2%26quot%3B%3B
            this.button2.Size = new System.Drawing.Size(124, 23);
            this.button2.TabIndex = 1;
            this.button2.Text = "Otro laberinto";
            this.button2.UseVisualStyleBackColor = true;
            this.button2.Click += new System.EventHandler(this.button2_Click);
            //
            // Form1
            //
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(345, 428);
            this.Controls.Add(this.button2);
            this.Controls.Add(this.button1);
            this.name=%26quot%3BForm1%26quot%3B%3B
            this.Text = "Form1";
            this.Load += new System.EventHandler(this.Form1_Load);
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;
    }
}

archivo: Form1.cs

Código: [Seleccionar]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Laberinto
{
    public partial class Form1 : Form
    {
        private Label[,] mat;
        private bool salida;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            int x = 10;
            int y = 50;
            mat=new Label[10,10];
            for (int fil = 0; fil < mat.GetLength(0); fil++)
            {
                for (int col = 0; col < mat.GetLength(1); col++)
                {
                    mat[fil, col] = new Label();
                    mat[fil, col].Location = new Point(x, y);
                    mat[fil, col].Size = new Size(30, 30);
                    Controls.Add(mat[fil, col]);
                    x = x + 32;
                }
                y = y + 32;
                x = 10;
            }
            Crear();
        }

        private void Crear()
        {
            Text = "";
            button1.Enabled = true;
            Random ale=new Random();
            for(int f = 0; f < 10; f++)
            {
                for(int c = 0; c < 10; c++)
                {
                    mat[f, c].BackColor = Color.Azure;
                    int a=ale.Next(0,4);
                    if (a==0)
                        mat[f,c].Text="1";
                    else
                        mat[f,c].Text="0";; 
                }
            }
            mat[9,9].Text="s";
            mat[0,0].Text="0";   
        }

        private void Recorrer(int fil, int col)
        {
            if (fil >= 0 && fil < 10 && col >= 0 && col < 10 && salida == false)
            {
                if (mat[fil,col].Text=="s")
                    salida = true;
                else
                    if (mat[fil,col].Text=="0")
                    {
                        mat[fil,col].Text="9";
                        mat[fil,col].BackColor=Color.Red;
                        Recorrer(fil, col + 1);
                        Recorrer(fil + 1, col);
                        Recorrer(fil - 1, col);
                        Recorrer(fil, col - 1);
                    }
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            salida = false;
            Recorrer(0, 0);
            if (salida == true)
                Text = "Tiene salida";
            else
                Text = "No tiene salida";
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Crear();
        }       
    }
}

Mi pregunta esta en el archivo Form1.cs. En el evento Load:

Código: [Seleccionar]
private void Form1_Load(object sender, EventArgs e)
        {
            int x = 10;
            int y = 50;
            mat=new Label[10,10];
            for (int fil = 0; fil < mat.GetLength(0); fil++)
            {
                for (int col = 0; col < mat.GetLength(1); col++)
                {
                    mat[fil, col] = new Label();
                    mat[fil, col].Location = new Point(x, y);
                    mat[fil, col].Size = new Size(30, 30);
                    Controls.Add(mat[fil, col]);
                    x = x + 32;
                }
                y = y + 32;
                x = 10;
            }
            Crear();
        }

Mi pregunta es: que hace esta linea?:
 mat[fil, col].Location = new Point(x, y);

Que significa Location?

Gracias y saludos
« Última modificación: Septiembre 13, 2016, 08:39:48 am por Stiuvert »

Desconectado seth

  • *
  • Underc0der
  • Mensajes: 264
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil
« Respuesta #1 en: Agosto 31, 2016, 08:59:26 pm »
Es la posicion del label

Desconectado Noporfavor

  • *
  • Underc0der
  • Mensajes: 105
  • Actividad:
    0%
  • Reputación 0
  • Que el debil mate a todos, mis queridos angeles
    • Ver Perfil
« Respuesta #2 en: Septiembre 01, 2016, 04:28:46 am »
Ahhh,  vale. Pero entonces hay una cosa que no entiendo:

La fila 1, columna 1 se desplaza a la posición 10, 50?
Seguramente entendí algo mal ya que la matriz es 10x10.

Gracias y saludos

Desconectado seth

  • *
  • Underc0der
  • Mensajes: 264
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil
« Respuesta #3 en: Septiembre 01, 2016, 07:22:42 pm »

La fila 1, columna 1 se desplaza a la posición 10, 50?
Si

Es la posicion 10, 50 de la pantalla, no de la matriz

Desconectado Noporfavor

  • *
  • Underc0der
  • Mensajes: 105
  • Actividad:
    0%
  • Reputación 0
  • Que el debil mate a todos, mis queridos angeles
    • Ver Perfil
« Respuesta #4 en: Septiembre 02, 2016, 06:43:05 am »
Ahhh,  ok; vale.

Y que significa size? En esta linea:

  mat[fil, col].Size = new Size(30, 30);

Me fije en Internet y me encontré con tres sizes. Que significa este size?

Desconectado Hu3c0

  • *
  • Underc0der
  • Mensajes: 434
  • Actividad:
    0%
  • Reputación 0
  • In the middle Netbeans
    • Ver Perfil
« Respuesta #5 en: Septiembre 02, 2016, 07:16:53 am »
Utiliza un poco el sentido común amigo SIZE=sitio=espacio  con lo cual estás dando un espacio de 30,30 height witdh  ancho por alto

Al objeto mat le dices por parámetros la fila y la columna y creas un nuevo sitio,espacio  o como quieras comprenderlo de 30 * 30 
« Última modificación: Septiembre 02, 2016, 07:22:44 am por Hu3c0 »

Desconectado Noporfavor

  • *
  • Underc0der
  • Mensajes: 105
  • Actividad:
    0%
  • Reputación 0
  • Que el debil mate a todos, mis queridos angeles
    • Ver Perfil
« Respuesta #6 en: Septiembre 02, 2016, 05:27:41 pm »
Es increible que, a pesar de que no estas con C#, sepas entender sus codigos.
Es increible que, a pesar de ser un tema muy dificil para mi eso de las matrices, tu te lo tomas como si fuera viento.
Es increible que, a pesar de tener voluntad, mi naturaleza me lleva bien abajo y me desanima y que a causa de esto deje de aprender C#.
Es increible que, a pesar de haber hecho mucho en C#, todavia me falta mucho en aprender.
Es increible que el poder siempre lo tendran administradores, padres, maestros, policias y que en este mundo no existen los heroes

Desconectado fudmario

  • *
  • Cramel
  • *
  • Mensajes: 197
  • Actividad:
    1.67%
  • Reputación 12
    • Ver Perfil
    • fudmario - GitHub
  • Skype: fudmario
« Respuesta #7 en: Septiembre 03, 2016, 01:40:37 am »
Pero sabes que es lo mas increible?, que con solo un comentario(que según mi opinion no fue ni ofensiva ni destructiva) tengas esa actitud derrotista.

No se que IDE usas, pero personalmente te recomendaria usar Visual Studio, es uno de los mejores IDE's y más completos y con la cual te facilitará aprender programación y ademas de la gran cantidad de complementos que facilita programar, lo poco que aprendí en programación lo hice con Visual Studio.

Y tan solo acercandote con el mouse puedes obtener descripción de Propiedades, Métodos,...




Recuerda que cuanto más aprendas, más te daras cuenta de lo poco que sabes....ya que el camino de la programación es Inmensa

Saludos.


« Última modificación: Septiembre 03, 2016, 01:42:23 am por fudmario »


Desconectado Hu3c0

  • *
  • Underc0der
  • Mensajes: 434
  • Actividad:
    0%
  • Reputación 0
  • In the middle Netbeans
    • Ver Perfil
« Respuesta #8 en: Septiembre 03, 2016, 09:17:05 am »
Es increible que, a pesar de que no estas con C#, sepas entender sus codigos.
Es increible que, a pesar de ser un tema muy dificil para mi eso de las matrices, tu te lo tomas como si fuera viento.
Es increible que, a pesar de tener voluntad, mi naturaleza me lleva bien abajo y me desanima y que a causa de esto deje de aprender C#.
Es increible que, a pesar de haber hecho mucho en C#, todavia me falta mucho en aprender.
Es increible que el poder siempre lo tendran administradores, padres, maestros, policias y que en este mundo no existen los heroes

Hola amigo no te derrumbes..!! te doy mi consejo este año he estado apunto de  esclafar el pc en la pared de mi dormitorio por lo menos tres veces..!,
ofuscación ante mucha información recibida, módulos que añaden que no tienen que ver con la informatica que son de relleno pero hay que estudiarlos
por obligación,inglés, entornos de desarrollo, base de datos,sobre redes,sobre software, sobre hardware,buffffff.

Pero he seguido terco como una mula ,en este mundo binario sólo hay espacio para los duros de mente es un camino extraordinariamente complicado
pero cuando todo lo que lees se asienta neuronalmente  y lo haces parte de tí, todo fluye como el agua.

No  te puedes imaginar lo que me costó comprender la herencia y la polimorfia en java y aún tengo algunas pequeñas dudas pero con tiempo y progra-
mando iré asentado todo lo que me hace falta.

Lo que has preguntado hasta el momento es todo de sentido común el método recursivo no era complicado, lo que has preguntado sobre size sabiendo
un poco de inglés y siendo intuitivo hubieras llegado a deducirlo.

Lo que te ocurre en estos momentos y yo he pasado por eso como te he descrito en los post de arriba es que tienes una ofuscación de un par de cojo-
...es, cuando te ocurra  desconecta un poco y después retoma el asunto otra vez, verás como luego de un corto tiempo se ven las cosas mejor.

Con respecto a lo que te ha dicho mi amigo y hermano fudmario:
Sigue sus consejos al pie de la letra para mi es un icono desde hace años es una persona con mucha  experiencia y sabiduría y buena gente

PD:Lee hasta caer rendido, duerme y haz parte de tí todo lo que has leído y cuando te levantes olvida todo lo que has leído, porque ya es parte de tí
« Última modificación: Septiembre 03, 2016, 09:53:32 am por Hu3c0 »

Desconectado Noporfavor

  • *
  • Underc0der
  • Mensajes: 105
  • Actividad:
    0%
  • Reputación 0
  • Que el debil mate a todos, mis queridos angeles
    • Ver Perfil
« Respuesta #9 en: Septiembre 03, 2016, 01:04:21 pm »
Hola seth,
Por si no lo sabes también hubiera tenido esa actitud derrotista sin ese comentario.
Y con respecto a Visual Studio, la definición es explicada como si te hablará un científico de Wikipedia.

Hola Hu3c0,
Tus palabras me dieron ánimo. Pasa que en este largo camino hacia el conocimiento hack inglés tengo a veces tiempos muy turbulentos en donde necesito alguien como vos ;)




Edición:

Bueno Hu3c0,
En la primera vuelta de la estructura repetitiva for de la columna se reserva espacio de 30x30. Pero en la segunda vuelta en la fila 1 columna 2 sucede lo mismo. No es cierto? Entendí algo mal?
« Última modificación: Septiembre 03, 2016, 07:33:56 pm por Gabriela »

Desconectado seth

  • *
  • Underc0der
  • Mensajes: 264
  • Actividad:
    0%
  • Reputación 2
    • Ver Perfil
« Respuesta #10 en: Septiembre 04, 2016, 09:42:41 pm »
yo no fui

Desconectado fudmario

  • *
  • Cramel
  • *
  • Mensajes: 197
  • Actividad:
    1.67%
  • Reputación 12
    • Ver Perfil
    • fudmario - GitHub
  • Skype: fudmario
« Respuesta #11 en: Septiembre 05, 2016, 02:10:58 pm »
......
Y con respecto a Visual Studio, la definición es explicada como si te hablará un científico de Wikipedia.
Sobre lo que dices sobre Visual Studio, es verdad que en un principio no se entiende mucho de lo que dice, pero es cuestión de tiempo para comenzar a comprender...

Bueno Hu3c0,
En la primera vuelta de la estructura repetitiva for de la columna se reserva espacio de 30x30. Pero en la segunda vuelta en la fila 1 columna 2 sucede lo mismo. No es cierto? Entendí algo mal?

Si, ya que cada vez que recorre el for, inicializas una nueva instancia de la estructura System.Drawing.Size con las dimensiones
de ancho y alto de 30x30. 

Sugerencia y/o Recomendación:
Como te dije en mi comentario, no se que IDE usas.
Pero desde Visual Studio, puedes depurar el código paso a paso, linea por linea, para poder entender que es lo que esta haciendo(como por ejemplo: ver que es lo que pasa en ese for, que pasa en cada recorrido, la asignacion de valores en las variables,...).




Existe un sin de tutoriales para aprender la Depuracion de Codigo paso a paso, con el cual podrás entender que es lo que pasa durante la ejecucion del codigo. De esta forma evitarias esperar a que alguien te responda dudas que tú mismo podrias responderte y ademas con la cual podrás acelerar tú aprendizaje.
Aquí algunos enlaces de referencia que te podrian servir:

Introducción a la depuración en Visual Studio 2015

Conceptos básicos del depurador

Desplazarse por el código con el depurador


Saludos,.


Desconectado Noporfavor

  • *
  • Underc0der
  • Mensajes: 105
  • Actividad:
    0%
  • Reputación 0
  • Que el debil mate a todos, mis queridos angeles
    • Ver Perfil
« Respuesta #12 en: Septiembre 13, 2016, 06:33:59 am »
Ahh gracias por el consejo fudmario y gracias a todos ustedes por el aguante.

Se los agradezco muchisimo

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 11115
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 1969
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 2574
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 3769
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 3910
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon