Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2009, 11:09   #1
zoza1
Пользователь
 
Регистрация: 01.07.2009
Сообщений: 15
По умолчанию Построить график функций?

Написать программу построения графика функции: y= |x-30|^3 +40
Спасибо заранее!!
zoza1 вне форума Ответить с цитированием
Старый 01.07.2009, 11:15   #2
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
unit grfunc_;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
  TForm1 = class(TForm)
    procedure FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

// Функция, график которой надо построить
 Function f(x:real):real;
 begin
    f:=Sqr(Abs(x-30))*abs(x-30)+40;           //|x-30|^3 +40
 end;

// строит график функции
procedure GrOfFunc;
var
 x1,x2:real;    // границы изменения аргумента функции
 y1,y2:real;    // границы изменения значения функции
 x:real;        // аргумент функции
 y:real;        // значение функции в точке x
 dx:real;       // приращение аргумента
 l,b:integer;   // левый нижний угол области вывода графика
 w,h:integer;   // ширина и высота области вывода графика
 mx,my:real;    // масштаб по осям X и Y
 x0,y0:integer; // точка - начало координат

begin
 // область вывода графика
 l:=10;                     // X - координата левого верхнего угла
 b:=Form1.ClientHeight-20;  // Y - координата левого верхнего угла
 h:=Form1.ClientHeight-40;  // высота
 w:=Form1.Width-40;         // ширина

 x1:=0;     // нижняя граница диапазона аргумента
 x2:=25;    // верхняя граница диапазона аргумента
 dx:=0.01;  // шаг аргумента

 // найдем максимальное и минимальное значения
 //  функции на отрезке [x1,x2]
 y1:=f(x1); // минимум
 y2:=f(x1); // максимум
 x:=x1;
 repeat
   y := f(x);
   if y < y1 then y1:=y;
   if y > y2 then y2:=y;
   x:=x+dx;
 until (x>=x2);

 // вычислим масштаб
 my:=h/abs(y2-y1);  // масштаб по оси Y
 mx:=w/abs(x2-x1);  // масштаб по оси X

 // оси
 x0:=l;
 y0:=b-Abs(Round(y1*my));

 with form1.Canvas do
 begin
   // оси
   MoveTo(l,b);LineTo(l,b-h);
   MoveTo(x0,y0);LineTo(x0+w,y0);
   TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));
   TextOut(l+5,b,FloatToStrF(y1,ffGeneral,6,3));
   // построение графика
   x:=x1;
   repeat
     y:=f(x);
     Pixels[x0+Round(x*mx),y0-Round(y*my)]:=clRed;
     x:=x+dx;
   until (x>=x2);
 end;
end;


procedure TForm1.FormPaint(Sender: TObject);
begin
  GrOfFunc;
end;

// изменился размер окна программы
procedure TForm1.FormResize(Sender: TObject);
begin
  // очистить форму
  form1.Canvas.FillRect(Rect(0,0,ClientWidth,ClientHeight));
  // построить график
  GrOfFunc;
end;

end.
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 01.07.2009, 12:02   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
ОДИНОЧЕСТВО В СЕТИ
Логичнее было бы использовать TChart.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.07.2009, 14:34   #4
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Цитата:
Логичнее было бы использовать TChart.
а чего там тогда писать????? кинул компонент настроил как надо 5 строк кода вставил и все!
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 01.07.2009, 15:28   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а чего там тогда писать?
Ну дык в том и смысл...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как построить график Nijaz Общие вопросы Delphi 5 09.06.2014 11:25
Построить график!! Inferno777 Помощь студентам 10 30.06.2009 17:46
Построить график функции Horknee Паскаль, Turbo Pascal, PascalABC.NET 15 23.09.2008 09:50