вывести N-ое количество линий, пересекающих прямоугольник.
помогите сделать так, что б линии начинали выводится не от средины экрана,а от начала =(((
Program Line7;
Uses Graph,CRT;
label 1;
var
x0,y0,x00,y00,x1,y1,x2,y2,g,a,b,n,i:integer;
driver,regim,error:integer;
Begin
clrscr;
Detectgraph(driver,regim);
Initgraph(driver,regim,'G:\TP7\BGI');
Error:=GraphResult;
if Error <> grOK then
begin
writeln(GraphErrorMsg(Error));
Halt(Error)
end;
readln(n);
ClearDevice;
SetColor(LightGreen);
Rectangle(5,478,300,200);
SetColor(Red);
SetLineStyle(0,0,1);
x0:=0; y0:=480;
x00:=640; y00:=0;
Line(x0,y0,x00,y00);
g:=x00 div n;
for i:=1 to n do begin
Line(x0,y0,x00+g,y00+g);
g:=g+15;
end;
Readln;
end.
Не понял вопроса как это не от середины экрана, из начала?
введите 20 штук....нужно что б они выводились начиная от Line(0,480,0,0) до Line(0,480,640,480)
x00:=640; попробуйте заменить на x00:=20;
2 линии выводит. остальные я так подозреваю уходят за линию(0,480,0,0)
Вот моя версия делал подругому
program p1;
uses graph;
var r,i,x0,y0,x00,y00,driver,mode,n,z:integer;
l:real;
begin
readln(n);
driver:=detect;
initgraph(driver,mode,'c:\bgi');
rectangle(5,478,300,200);
x0:=0;
y0:=480;
x00:=20;
r:=100;
z:=0;
setcolor(red);
for i:=1 to n do begin
x00:=round(x00+i+(640/n));
If (r*r-(x00)>0) then y00:=-round(sqrt(r*r-x00))-480;
line(x0,y0,x00,y00);
end;
readln;
end.
тоже вариант))) большое спасибо
Еще лучше - не считать себя пророком, и не предполагать, что все видеокарты имеют только разрешение 640*480. Есть и другие разрешения, кстати. Может инициализироваться режим 640*350 - тогда половины картинки вообще не будет видно. Не просто так придумали функции GetMaxX и GetMaxY. Сначала получаем с их помощью максимальные значения X и Y соответственно, а потом уже используем эти значения в расчетах. Тогда неожиданностей будет меньше.
Можно тупо жёстко устанавливать режим (Driver := VGA; Mode := VGAhi или mov ax, $0013; int $10), и всё делать под него (эти режимы нынче есть у всех). Я так делал. Но при переходе под винду мне это дало непрятности - я оказался не готов к способности окон менять размеры и к тому, что у всех разное разрешение экрана.
В графике (геометрии) следует соблюдать пропорции. Их можно достичь, если использовать относительные величины, такие как GetMaxX, GetMaxY, не зависящие от устанавливаемого режима графики.
Так что нужно перевести все величины в зависимость от этих функций. Допустим, длина отрезка линии, равная 0.15*GetMaxX.
Возня же с абсолютными величинами неоправдана и ведёт ко множеству проблем с пропорциями при любых изменениях в программе.