Программа


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.

Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию