Программа
USES Crt,Graph; { Подключение модулей }
CONST PathToDriver=''; { Путь к графическому драйверу }
VAR GraphDriver:Integer; { Графический драйвер }
GraphMode:Integer; { Графический режим }
FUNCTION F(X:real):real;far; { Функция }
Begin
F:=exp(0.0633*X-0.428)
End;
PROCEDURE OutGraph (var Fl:text); { Процедура вывода графика }
Const PAK='Press Any Key'; { Подсказка }
Var ScaleX,ScaleY:real; { Масштабы по осям X и Y }
MaxY,MinY:real; { Максимальное и минимальное значения координаты Y }
GetFirstPointFlag:boolean; { Флаг получения значения первой точки графика }
i:integer; { Счетчик }
BufY:real; { Буферная переменная для сохранения значения координаты Y }
BufT:real; { Буфер для чтения значения температуры }
OXy,OYx:real; { Y-координата оси OX, X-соордината оси OY }
QuantityPoint:integer; { Количество точек графика }
St:string; { Переменная для перевода числа в литерную строку }
Begin
GetFirstPointFlag:=FALSE; { Сброс флага }
QuantityPoint:=0; { Сброс количества точек графика }
while not EOF(Fl) do { Цикл чтения файла для определения
максимального и минимального значений f(t) }
begin
ReadLn(Fl,BufT); { Чтение температуры }
QuantityPoint:=QuantityPoint+1; { Набор количества точек графика }
BufY:=F(BufT); { Расчет интенсивности }
if GetFirstPointFlag { Проверка прохождения через первую точку }
then if BufY>MaxY { Сравнение полученной точки с максимальной }
then MaxY:=BufY { Переопределение максимума }
else if BufY<MinY { Сравнение полученной точки с минимальной }
then MinY:=BufY { Переопределение минимума }
else
else begin
GetFirstPointFlag:=TRUE; { Подъем флага }
MinY:=BufY; { Определение минимума }
MaxY:=BufY; { Определение максимума }
end
end;
{ Переоткрытие файла: }
Close(Fl);
Reset(Fl);
SetColor(White); { Установка белого цвета }
SetFillStyle(SolidFill,Cyan); { Установка типа заполнения }
Bar(0,0,GetMaxX,GetMaxY); { Прорисовка фона }
ScaleX:=(QuantityPoint-1)/(GetMaxX*8)*10; { Вычисление масштаба по оси X }
if ScaleX=0 then ScaleX:=1;
{ Если масштаб по оси X равен 0, то переопределение масштаба }
ScaleY:=(MaxY-MinY)/(GetMaxY*8)*10; { Вычисление масштаба по оси Y }
if ScaleY=0 then ScaleY:=1;
{ Если масштаб по оси Y равен 0, то переопределение масштаба }
{ Вывод шкал: }
for i:=1 to 9 do
begin
Str((Round(1+(QuantityPoint-1)/8*(i-1))),St); { Перевод числа в строку }
Line(Round(GetMaxX*0.1*i),Round(GetMaxY*0.9),Round(GetMaxX*0.1*i),Round(GetMaxY*0.1));
{ Прорисовка вертикальных линий сетки }
OutTextXY(Round(GetMaxX*0.1*i-TextWidth(St)/2),Round(GetMaxY*0.92),St)
{ Вывод чилового значения }
end;
for i:=1 to 7 do
begin
Str(MaxY-(MaxY-MinY)/6*(i-1):6:2,St); { Перевод числа в строку }
Line(Round(GetMaxX*0.1),Round(GetMaxY*(0.1+0.8/6*(i-1))),Round(GetMaxX*0.9),Round(GetMaxY*(0.1+0.8/6*(i-1))));
{ Прорисовка горизонтальных линий сетки }
OutTextXY(Round(GetMaxX*0.1-TextWidth(St)*1.1),Round(GetMaxY*(0.1+0.8/6*(i-1))-TextHeight(St)/2),St)
{ Вывод чилового значения }
end;
ReadLn(Fl,BufT); { Чтение аргумента }
BufY:=F(BufT); { Вычисление значения функции }
SetColor(Red); { Установка цвета }
SetLineStyle(0,0,3); { Установка типа линий }
MoveTo(Round(GetMaxX/10),Round(GetMaxY*9/10-(BufY-MinY)/ScaleY));
{ Помещение указателя в первую точку графика }
PutPixel(Round(GetMaxX/10),Round(GetMaxY*9/10-(BufY-MinY)/ScaleY),
White); { Прорисовка первой точки графика }
for i:=1 to QuantityPoint do { Цикл прорисовки графика }
begin
ReadLn(Fl,BufT); { Чтение аргумента }
LineTo(Round(GetMaxX*0.1+(i-1)/ScaleX),
Round(GetMaxY*9/10-(F(BufT)-MinY)/ScaleY));
{ Прорисовка линии от предыдущей точки к текущей }
end;
SetColor(White); { Установка цвета }
OutTextXY((GetMaxX-TextWidth(PAK))div 2,GetMaxY-TextHeight(PAK)-5,PAK)
{ Вывод подсказки }
End;
VAR Ch:char; { Буфер для чтения клавиатуры }
Fl:text; { Файловая переменная }
BEGIN
Assign(Fl,'tempvod.god'); { Связывание файловой переменной с именем файла }
GraphDriver:=Detect; { Автоматическое оперделение драйвера }
GraphMode:=0; { Задание графического режима }
InitGraph(GraphDriver,GraphMode,PathToDriver); { Инициалиэация графики }
Reset(Fl); { Открытие файла }
OutGraph(Fl); { Вывод графика }
Close(Fl); { Закрытие файла }
Ch:=ReadKey; { Остановка программы }
CloseGraph { Закрытие графического режима }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию