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

Помогите найти простое решение

На практике задали задачу, я ее решил, но надо как-нибудь укорочить размер решения, есть ли более простое решение? Вот текст program Aibar; Uses graph, crt; var d,m,x,y:integer; begin ClrScr; d:=detect; Initgraph(d,m, ''); If GraphResult<>grOk Then Halt(1); setcolor(2); Line ( 500, 200, 600, 100); Line ( 600, 100, 700, 200); Line ( 700, 200, 650, 200); Line ( 650, 200, 650, 300); Line ( 650, 300, 750, 300); Line ( 750, 300, 750, 250); Line ( 750, 250, 850, 350); Line ( 850, 350, 750, 450); Line ( 750, 450, 750, 400); Line ( 750, 400, 650, 400); Line ( 650, 400, 650, 500); Line ( 650, 500, 700, 500); Line ( 700, 500, 600, 600); Line ( 600, 600, 500, 500); Line ( 500, 500, 550, 500); Line ( 550, 500, 550, 400); Line ( 550, 400, 450, 400); Line ( 450, 400, 450, 450); Line ( 450, 450, 350, 350); Line ( 350, 350, 450, 250); Line ( 450, 250, 450, 300); Line ( 450, 300, 550, 300); Line ( 550, 300, 550, 200); Line ( 550, 200, 500, 200); readln; closegraph; end. Вообщем надо нарисовать вроде объемного крестика со стрелками на конце. Буду благодарен за помощь
В паскале не силен, но можешь сделать что то вроди такого:
Создаешь текстовый (или бинарный - как тебе удобнее) файл в папке с проектом. У него пихаешь столбиком кооррдинаты свои. Например так:
500,200,600,100
600,100,700,200
700,200,650,200
....и т. д.
1. В коде объявляешь массив integer'ов.
2. Далее в коде открываешь этот файл для чтения и добавляешь цикл (вместо кучи Line( ) ' ов) - который считывает вышеоткрытый файл построчно в строковую переменную (каждую итерацию цикла т. е. ) Т. е. на каждой итерации цикла в переменной у тебя будет строка типа "500,200,600,100".
3. Потом парсишь ее в 4 целых числа (тоже циклом) и пишешь их в той последовательности в которой они стояли в вышесозданный массив. Т. е. на протяжении цикла построчного чтения файла заполняешь массив по 4 элемента за итерацию.
4. Потом, когда массив заполнен и файл прочитан до конца, у тебя массив содержит сплошняком все координаты. Потом пишешь еще цикл который будет считывать из массива 4 значения и пихать их в Line( ). Все.
Кстати говоря пункт 4 можешь сделать в 3м этапе - т. е. сразу. Прочел строку, распарсил в 4 integer'а и нарисовал линию. Тогда и массив не нужен
ГБ
Геннадий Б
11 177
Лучший ответ
Посмотрите в сторону процедуры DrawPoly

Вот пример использования из справки

{ Пример программы для процедуры Drawpoly }

Uses Graph;

Const Triangle : Array [1..4] Of PointType = ((X: 50; Y: 100),
(X: 100; Y:100),
(X: 150; Y: 150),
(X: 50; Y: 100));
Var Gd, Gm : Integer;

Begin
Gd:=Detect;
InitGraph(Gd, Gm, 'C:\BP\BGI'); { Путь к BGI драйверам }
If GraphResult <> grOk Then Halt(1);
DrawPoly(SizeOf(Triangle) Div SizeOf(PointType), Triangle);
ReadLn;
CloseGraph;
End.

Программа рисует треугольник.
Cesaret ......
Cesaret ......
59 613