Другие языки программирования и технологии

Помогите пожалуйста в Delphi написать программу

Вывести символ "n" в позициях (n,n) цветом n, если это возможно. В противном случае выдать соответствующее сообщение.
DB
Dos Baisadykov
70
program ConsoleApp;

{$APPTYPE CONSOLE}

uses
 Windows;

var
 n : Char;
 x, y : Smallint;
 Color : Byte;

procedure GoToXY(X, Y: Smallint);
var
 NewPos : TCoord;
begin
 NewPos.X := X;
 NewPos.Y := Y;
 SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), NewPos);
end;

procedure TextColor(Color: Byte);
var
 TextAttr : WORD;
begin
 TextAttr := (TextAttr and $F0) or (Color and $0F);
 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), TextAttr);
end;

begin
 Write('Symbol: ');
 ReadLn(n);
 Write('X, Y: ');
 ReadLn(x, y);
 Write('Color: ');
 ReadLn(Color);
 GoToXY(x, y);
 TextColor(Color); //0-15
 Write(n);
 ReadLn;
end.
Сообщения об ошибках оставляю тебе. Тут нужно проверить переменную Color(0-15) и координаты чтобы за пределы не выходили (отсчёт от нуля) .
Высоту и ширину экрана можно получить из этой функции:

procedure GetScreenSizes(var Width, Height: Smallint);
var
 BufferInfo: TConsoleScreenBufferInfo;
begin
 GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), BufferInfo);
 Width := BufferInfo.srWindow.Right - BufferInfo.srWindow.Left + 1;
 Height := BufferInfo.srWindow.Bottom - BufferInfo.srWindow.Top + 1;
end;

ЗЫ: Всё разжевал. Тут только полный дурак не разберётся как всё собрать воедино. Если не разберёшься, то пиши на почту. За 50 руб. напишу готовую ;-)
Роман Шатунов
Роман Шатунов
84 677
Лучший ответ
В текстовом виде это довольно сложно, поскольку Delphi не умеет управлять прямо очисткой экрана, цветом и положением курсора. А на форме все несколько проще:

OutputPossible:=(n>=0) and (n<=Width) and (n<=Height);
if OutputPossible then
with TLabel.Create(self) do
begin
Caption:='n';
Parent:=self;
Left:=n;
Top:=n;
Font.Color:=n;
end
else
ShowMessage('The output is impossible');
Валера Немыкин
Валера Немыкин
75 077