[ Foro de C# ]

[Problema] Ejercicio 5.3.1

02-May-2015 17:17
Pedro Luque
3 Respuestas

Hola, que tal?

Primero presentarme, soy Pedro, y actualmente estoy realizando el curso de C# de Nacho Cabanes, el cual me parece excelente y muy fácil de entender (mi nivel era de 0 absoluto). Mis felicitaciones a él por el curso y a vosotros por este grán foro.

Ahora voy con la duda. En el ejercicio 5.3.1, que pide, crear una función que permita dibujar en pantalla un cuadrado de x ancho y x alto, no consigo hacer que funcione correctamente, y no se donde está el problema. La función, es la siguiente:


public static void DibujarCuadrado(int a, int b)
        {
            for (int i = 1; i <= b; i++)
            {
                Console.WriteLine("");
                for (int j = 1; i <= a; i++)
                {
                    Console.Write("*");
                }
            }
        }


El problema que me arroja (en principio) el editor es que la variable j está asignada pero su valor nunca se utiliza. Me resulta curioso, puesto que de la variable i no me dice absolutamente nada..... El programa ejecuta, pero solamente me imprime una cantidad de espacios con salto de línea y la última línea del cuadrado correctamente...

Si ejecuto ese pedazo de código dentro del Main, funciona correctamente... ¿Estoy realizando algo mal?

Muchas gracias por vuestra ayuda de antemano!


02-May-2015 17:47
Pedro Luque

No he dicho nada, era una estupidéz XD. Había declarado mal los parametros del segundo for, cambiando j por i... amén de que el ejercicio pedía un cuadrado y no un rectángulo....

Gracias por vuestra ayuda, disculpas por la tontería...


03-May-2015 00:00
Nacho Cabanes (+83)

Eso te iba a decir, que habías mezclado los índices "i" y "j" en el segundo "for". Lo de que se trate de un cuadrado o un rectángulo es una diferencia simbólica: basta con que "a" y "b" sean iguales.

En general, por facilidad a la hora de encontrar ese tipo de errores y para planificar la lógica del programa, es preferible usar nombres de variable más claros. Yo no habría usado "i", sino "fila", ni "j" sino "columna",y, de igual modo, los valores límite los habría llamado "alto" y "ancho" en lugar de "b" y "a". Se tarda muy poco más en escribirlo y a cambio se gana muchísimo tiempo en caso de error o en caso de tener que modificar o ampliar el programa más adelante.

Además, recuerda que no hace falta usar WriteLine(""), basta con WriteLine() para avanzar de línea.


03-May-2015 15:13
Pedro Luque

Si, muchas gracias por tu pronta respuesta Nacho. Efectivamente, uso "i" y "j" por costumbre realmente, en el Main sí lo tenía como DibujarCuadrado (alto, ancho); , pero efectivamente son cosas que tengo que aprender a incorporar en mis "manías".

Muchas gracias de nuevo por tu ayuda, creo que haces un trabajo fantástico.

Un saludo!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)