const n=20;
var a:array[1..n] of real;
maxa,mina:real;
i,j:integer;
begin
{ Задание исодных данных. Этот блок может быть изменен
в зависимости от заданного спосба получения исходных данных }
for i:=1 to n do a[i]:=exp(-0.01*sqr(i));
{ Поиск максимального и минимального значения в массиве }
maxa:=a[1]; mina:=a[1];
for i:=1 to n do
begin
if a[i]>maxa then maxa:=a[i];
if a[i]<mina then mina:=a[i];
end;
{ Стандартный текстовый экран -- 25 строк. Последняя строка будет
содержать номера элементов. Начинаем перебирать номера строк в графике
в обратном порядке от 23 до 0, т.к. график выводится сверху вниз.}
for j:=23 downto 0 do
begin
{ Вертикальная ось }
if j=23
then write('^')
else write('|');
{ Перебираем элементы массива }
for i:=1 to n do
{ Если его соотношение к дипазону значений массива
соответствует номеру строки }
if ((a[i]-mina)/(maxa-mina)*23>=j) and
((a[i]-mina)/(maxa-mina)*23<j+1)
{ то выводим знак }
then write('*')
{ иначе пробел }
else write(' ');
writeln;
end;
{ Номера элементов -- выводится каждый пятый }
write(' ');
i:=5;
while (i<=n) do
begin
{ Каждый номер выводится с форматом :5, т.е. чтобы
занимать все пять позиций }
write(i:5);
i:=i+5;
end;
readln;
end.
uses graph,crt;
const n=20;
var a:array[1..n] of real;
maxa,mina:real;
i,j:integer;
s:string;
begin
{ Задание исодных данных. Этот блок может быть изменен
в зависимости от заданного спосба получения исходных данных }
for i:=1 to n do a[i]:=exp(-0.01*sqr(i-5))-0.2;
{ Поиск максимального и минимального значения в массиве }
maxa:=a[1]; mina:=a[1];
for i:=1 to n do
begin
if a[i]>maxa then maxa:=a[i];
if a[i]<mina then mina:=a[i];
end;
i:=0;j:=0;
{ инициализация графического режима. Третий аргумент -- путь к egavga.bgi.
Если скопировать его в директория программы -- то пустая строка. }
initgraph(i,j,'');
{ Дл каждой точки по очереди }
for i:=1 to n do
begin
{ Щирина экрана -- 640, высота -- 480.
Позиция по X: отступ 20 точек плюс i-1 раз интервал между точками
600/20 = 30.
Позиция по Y: расстояние от нижнего края (с учётом отступа
в 20 точек) пропорционально разнице между значением элемента
массива и минимумом }
circle(20+30*(i-1),round(440-(a[i]-mina)/(maxa-mina)*400),5);
end;
{ вертикальная ось }
line(1,0,1,480);
{ горизонтальная ось. Задаётся по нулевому значению. Если 0 в диапазон
значений массива (от mina до maxa) не попадает, то ось не выведется. }
line(0,round(440-(0-mina)/(maxa-mina)*400),
640,round(440-(0-mina)/(maxa-mina)*400));
{ Номера элементов -- выводится каждый пятый }
i:=5;
while (i<=n) do
begin
{ Преобразуем номер в строку }
str(i,s);
outtextxy(20+30*(i-1),470,s);
i:=i+5;
end;
readkey;
closegraph;
end.
как сделать чтобы горизонтальная ось всегда выводилась?
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.