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

Пожалуйста помогите мне срочна нужно алгоритм рисования индекса города Новосибирск (630046),

На заборе или в Кумире?
Дмитрий Грудка
Дмитрий Грудка
59 658
Лучший ответ
Максат Шаймурат Можно алгоритм его рисования
uses GraphABC;
begin
(Window.Width, Window.Height) := (950, 200);
var S := '630046'; // Цифры индекса для вывода;
var Точки := Arr(0,0, 0,0, 50,0, 0,50, 50,50, 0,100, 50,100); // координаты 8 точек (первые два нуля не используются);
var a: array of integer; // массив используемый для задания пути соединения точек
for var j := 1 to S.Length do //Перебор Цифр из S для вывода
begin
case strtoint(S[j]) of
0: begin setLength(a, 7); a := Arr(1, 2, 4, 6, 5, 3, 1); end;
1: begin setLength(a, 4); a := Arr(3, 2, 4, 6); end;
2: begin setLength(a, 5); a := Arr(1, 2, 4, 5, 6); end;
3: begin setLength(a, 5); a := Arr(1, 2, 3, 4, 5); end;
4: begin setLength(a, 6); a := Arr(1, 3, 4, 2, 4, 6); end;
5: begin setLength(a, 6); a := Arr(2, 1, 3, 4, 6, 5); end;
6: begin setLength(a, 6); a := Arr(2, 3, 5, 6, 4, 3); end;
7: begin setLength(a, 4); a := Arr(1, 2, 3, 5); end;
8: begin setLength(a, 8); a := Arr(3, 1, 2, 4, 3, 5, 6, 4); end;
9: begin setLength(a, 5); a := Arr(4, 3, 1, 2, 4, 5); end;
end;
var (x1, y1) := (Точки [a[0]*2], Точки [a[0]*2+1]);
for var k := 1 to a.Length - 1 do
begin
var (x2, y2) := (Точки [a[k]*2], Точки [a[k]*2+1]);
line(x1 + 80 * j, y1+40, x2 + 80 * j, y2 + 40);
(x1,y1) := (x2,y2);
end;
end;
end.
Александр Казаков Еще один вариант, чуть нагляднее
uses GraphABC;
begin
(Window.Width, Window.Height) := (950, 200);
var S := '630046'; // Цифры индекса для вывода;
// координаты соединения последовательно 8 точек
var Точки := Arr(50,0, 50,50, 50,100, 0,100, 0,50, 0,0, 50,0, 0,50, 50,50, 0,100);
var a := new integer[10]; // массив используемый для подсвечиваия линий цифры
Pen.Width := 5;
for var j := 1 to S.Length do //Перебор Цифр из S для вывода
begin
case strtoint(S[j]) of
0: a := Arr(1, 1, 1, 1, 1, 1, 0, 0, 0); // г-- 6 --i
1: a := Arr(1, 1, 0, 0, 0, 0, 1, 0, 0); // | / |
2: a := Arr(1, 0, 1, 0, 0, 1, 0, 0, 1); // 5 7 1
3: a := Arr(0, 0, 0, 0, 0, 1, 1, 1, 1); // | / |
(продолжение в следующем комментарии)
Александр Казаков 4: a := Arr(1, 1, 0, 0, 1, 0, 0, 1, 0); // |-- 8 --|
5: a := Arr(0, 1, 1, 0, 1, 1, 0, 1, 0); // | / |
6: a := Arr(0, 1, 1, 1, 0, 0, 1, 1, 0); // 4 9 2
7: a := Arr(0, 0, 0, 1, 0, 1, 1, 0, 0); // | / |
8: a := Arr(1, 1, 1, 1, 1, 1, 0, 1, 0); // |-- 3 --|
9: a := Arr(1, 0, 0, 0, 1, 1, 0, 1, 1);
end;
var (x1, y1) := (Точки [0], Точки [1]);
for var k := 1 to 9 do
begin
var (x2, y2) := (Точки [k * 2], Точки [k * 2 + 1]);
if a[k-1] = 0 then (Pen.Width, Pen.Style) := (1, psDot)
else (Pen.Width, Pen.Style) := (5, psSolid);
line(x1 + 80 * j, y1 + 40, x2 + 80 * j, y2 + 40);
(x1, y1) := (x2, y2);
end;
end;
end.
Александр Казаков |---6---|
5--/7--1
|---8---|
4--/9--2
|---3---|