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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2014, 01:16   #1
delvan
Пользователь
 
Регистрация: 08.12.2014
Сообщений: 10
По умолчанию График функции y=sinx+cosx (Delphi)

Здравствуйте.Задание такое:нарисовать график функции y=sinx+cosx. Пределы рисования графика определяются значениями xmin и xmax. Значения ymin и ymax должны соответствовать минимальному и максимальному значению функции на промежутке [xmin; xmax]. При построении функции левая граница клиентской области окна должна соответствовать xmin, правая – xmax, верхняя – ymax, нижняя – ymin. Значения xmin и xmax задаются в дочерней форме.
Вот программка,график строится.Но помогите, пожалуйста, её скорректировать в соответствии с заданием.

Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Image1: TImage;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Button1: TButton;
    procedure Draw;
    procedure FormCreate (Sender: TObject);
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
const
    n=100;
var
    Form1: TForm1;
 
    xmin, xmax, ymin, ymax: real;
implementation
 
{$R *.dfm}
 
procedure  TForm1.Draw;
var
   Y, Xscr,h: extended;
   px,py,i:integer;
begin
   Image1.Canvas.Pen.Color:=clWhite;
   image1.Canvas.Rectangle(0,0,image1.Width, image1.Height);
   xscr:=image1.Width/n;
   h:=(xmax-xmin)/n;
   y:=sin(xmin)+cos(xmin);
   py:=image1.Height-trunc((y-ymin)*image1.Height/(ymax-ymin));
   Image1.Canvas.MoveTo(0, py);
   Image1.Canvas.Pen.Color:=clFuchsia;
   for i:=1 to n do
   begin
        y:=sin(xmin+i*h)+cos(xmin+i*h);
        PY:=trunc(Image1.Height-(Y-ymin)*Image1.Height/(ymax-ymin));
        px:=trunc(i*xscr);
        Image1.Canvas.LineTo(px, py);
   end;
end; 
procedure TForm1.FormCreate (Sender: TObject);
begin
    xmin:=0;
    xmax:=4*pi;
    ymin:=-2;
    ymax:=2;
    Draw;
    edit1.Text:=floattostr(xmin);
    edit2.Text:=floattostr(xmax);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
   x:extended;
   code: integer;
begin
   val(edit1.Text,x,code);
   if code=0 then xmin:=x
   else xmin:=0;
   val(edit2.Text,x,code);
   if code=0 then xmax:=x
   else xmax:=4*pi;
   if xmin>xmax then
   begin
       x:=xmin;
       xmin:=xmax;
       xmax:=x;
end;
   Draw;
   edit1.Text:=floattostr(xmin);
   edit2.Text:=floattostr(xmax);
end;
end.
Вложения
Тип файла: zip lab2.zip (211.4 Кб, 12 просмотров)

Последний раз редактировалось delvan; 08.12.2014 в 14:46.
delvan вне форума Ответить с цитированием
Старый 08.12.2014, 07:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Слегка глупый вопрос: TChart запрещен конвенцией ассоциативно-инициативных преподавателей?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.12.2014, 12:28   #3
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Задания даются по изученным темам. Если темой был канвас, то метода решения вполне понятна.
WinCoder вне форума Ответить с цитированием
Старый 08.12.2014, 12:34   #4
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,544
По умолчанию

Ваш код даже смотреть не хочется. Делать отступы еще не учили или вы прогуляли занятие?
Arigato вне форума Ответить с цитированием
Старый 08.12.2014, 14:52   #5
delvan
Пользователь
 
Регистрация: 08.12.2014
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Слегка глупый вопрос: TChart запрещен конвенцией ассоциативно-инициативных преподавателей?
Нет.В задании не указано с помощью чего строить график.
delvan вне форума Ответить с цитированием
Старый 08.12.2014, 14:56   #6
delvan
Пользователь
 
Регистрация: 08.12.2014
Сообщений: 10
По умолчанию

Цитата:
Сообщение от WinCoder Посмотреть сообщение
Задания даются по изученным темам. Если темой был канвас, то метода решения вполне понятна.
Вы не подскажите, как значения xmin и xmax задавать в дочерней форме?
delvan вне форума Ответить с цитированием
Старый 08.12.2014, 14:58   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В задании не указано с помощью чего строить график.
Тогда рекомендую: http://www.programmersforum.ru/showthread.php?t=62048
Формулу только свою подставь.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.12.2014, 16:14   #8
delvan
Пользователь
 
Регистрация: 08.12.2014
Сообщений: 10
По умолчанию

спасибо...
delvan вне форума Ответить с цитированием
Старый 08.12.2014, 18:17   #9
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Stilet Инициализацию TFastLineSeries нужно было в RunTime положить. Копипастить же будут.
WinCoder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(delphi) Написать программу для вычисления значений функции f(x)=sinx на отрезке[a,b] Светлана12 Помощь студентам 2 29.04.2014 19:34
VBA Дано число x. Напечатать в порядке возрастания числа: sinx, cosx. lnx. Если при каком-либо x некоторые из выражений не имеют с Stinray Помощь студентам 0 23.05.2013 18:44
График y=sinx*cosx на Assembler __NRG__ Помощь студентам 0 09.05.2011 02:38
график функции sinx, построит функцию на основе многочлена (по формуле Лагранжа). Alexcomeback Общие вопросы C/C++ 2 18.04.2009 14:08