Не понятно,что. Ты написал(а),вот 2).Что имеется ввиду?
// Не скажу что оптимально но работает
uses
DrawMan;
const
c_x = 8;
c_y = 8;
var
xi, yi, h: integer;
procedure one_star(x, y, r: integer);
var
xi, yi, step: integer;
begin
step := r div 4;
for xi := -1 to 1 do
for yi := -1 to 1 do
begin
if (xi * yi <> 0) or (xi + yi = 0) then
continue;
ToPoint(x, y);
PenDown;
ToPoint(x + xi * 4 * step, y + yi * 4 * step);
PenUp;
// stop;
ToPoint(x + yi * step, y + xi * step);
PenDown;
ToPoint(x + xi * 4 * step, y + yi * 4 * step);
PenUp;
ToPoint(x - yi * step, y - xi * step);
PenDown;
ToPoint(x + xi * 4 * step, y + yi * 4 * step);
PenUp;
ToPoint(x + yi * 2 * step, y + xi * 2 * step);
PenDown;
ToPoint(x + xi * 3 * step, y + yi * 3 * step);
PenUp;
ToPoint(x - yi * 2 * step, y + xi * 2 * step);
PenDown;
ToPoint(x - xi * 3 * step, y - yi * 3 * step);
PenUp;
ToPoint(x + yi * 2 * step, y - xi * 2 * step);
PenDown;
ToPoint(x - xi * 3 * step, y - yi * 3 * step);
PenUp;
end;
end;
begin
Field(2 * c_x, 2 * c_y);
h := c_x div 2;
for xi := -1 to 1 do
for yi := -1 to 1 do
begin
if (xi * yi <> 0) or (xi + yi = 0) then
continue;
one_star(c_x + xi * h, c_y + yi * h, h);
end;
end.
Ваша схема, в общем, верна. Её можно чуть упростить, убрать проверку Р.
Var
n,x:integer;
a,b,c:byte;
Begin
read (n);
c:=n div 100 mod 10;
b:=n div 10 mod 10;
a:=n div 1 mod 10;
x:=100*a+10*b+1*c;
write (x);
<span>end.</span>