For personal reasons I’ve not been very active in the last week or so. Therefore the solution I promised has been a bit late in coming.
Here is the “reference solution” for the simple challenge that I set last week. It is by no means the only solution, nor is it necessarily the best solution (depending on how you define “best”)
class Program { private static void Main(string[] args) { Console.Write("Width:"); int width = Convert.ToInt32(Console.ReadLine()); Console.Write("Height:"); int height = Convert.ToInt32(Console.ReadLine()); DrawBox(width, height); Console.ReadLine(); } private static void DrawBox(int width, int height) { // Work out the interior width and height (i.e. the width // and height of the space inside the box) int interiorWidth = width - 2; int interiorHeight = height - 2; // Work out what the top and bottom of the box should look like string topAndBottom = new string('*', width); // Work out what the interior rows should look like string interiorRow = string.Concat( "*", new string(' ', interiorWidth), "*", Environment.NewLine); // Work out the entire interior using the "trick" of defining // a string with a repeating character for as many rows as the // interior needs to be, then replacing each of those characters // with the pattern for a row of the interior. string interior = new string('-', interiorHeight); interior = interior.Replace("-", interiorRow); // Write the box to the console. Console.WriteLine(topAndBottom); Console.Write(interior); Console.WriteLine(topAndBottom); } }