Вывод различных фигур в консоли - C#
Формулировка задачи:
Я помню, как на уроках по C++ рассказчик формулами выводил разные фигуры в консоли, а как это реализовать на этом языке, кто-нибудь подскажет? Например квадрат из # ?
Решение задачи: «Вывод различных фигур в консоли»
textual
Листинг программы
using System;
namespace A
{
class ConsoleCanvas
{
private char[][] canvas;
int SIZE;
public ConsoleCanvas(int size)
{
canvas = new char[SIZE = size][];
for (int y = 0; y < canvas.Length; y++)
{
canvas[y] = new char[SIZE];
for (int x = 0; x < canvas[y].Length; x++) canvas[y][x] = ' ';
}
}
public void plot(int x, int y)
{
if ((x >= SIZE) || (y >= SIZE) || (x < 0) || (y < 0)) return;
canvas[y][x] = '#';
}
public void line(int x1, int x2, int y1, int y2)
{
double dx = x2 - x1;
if (dx == 0) { for (var y = y1; y < y2; y++) plot(x1, y); return; }
double dy = y2 - y1;
for (var x = x1; x <= x2; x++)
{
double y = y1 + dy * (x - x1) / dx;
plot((int)x, (int)Math.Round(y));
}
}
public override string ToString()
{
var sb = new System.Text.StringBuilder();
for (int y = 0; y < canvas.Length; y++)
{
for (int x = 0; x < canvas[y].Length; x++) sb.Append(canvas[y][x]);
sb.AppendLine();
}
return sb.ToString();
}
}
class Program
{
static void Main(string[] args)
{
var c = new ConsoleCanvas(20);
c.line(1, 1, 1, 7);
c.line(12, 12, 1, 7);
c.line(1, 12, 1, 1);
c.line(1, 12, 7, 7);
c.line(1, 12, 1, 7);
Console.Write(c);
Console.ReadLine();
}
}
}