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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2020, 20:15   #1
demonforevo
Новичок
Джуниор
 
Регистрация: 23.05.2020
Сообщений: 4
По умолчанию Delphi, расчет значений кусочно-заданной функции

Немогу разобратся что нетак делаю а сроки поджимают. Может кто подскажет
Над написать простенькую прогу в лелфи для расчета и черчения графика
вот я на данный оммент как пишу
Код:
begin
xn:=-10;
xk:=8;
dx:=(xk-xn)/N;
R:=2;
for i := 1 to N do begin
  x[i]:=xn+(i-1)*dx;
    if (x[i]>=-10) and (x[i]<=0) then
  f[i]:=(-x[i]*3-18)/6;
  if (x[i]>0) and (x[i]<=3) then
  f[i]:=sqrt(R*R-x[i]*x[i]);
  if (x[i]>3) and (x[i]<=6) then
  f[i]:=sqrt(R*R-x[i]*x[i]+36);
    if (x[i]>6) and (x[i]<=8) then
  f[i]:=0;
end;
end;
но мой вариант с окружностью явно ненравится проге.
само задание пришил. Если кто шарит помогите пожалуйста целиком написать))
Изображения
Тип файла: png 444444444444444.png (23.6 Кб, 27 просмотров)

Последний раз редактировалось BDA; 23.05.2020 в 20:43.
demonforevo вне форума Ответить с цитированием
Старый 23.05.2020, 20:45   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
if x[i] >= -10 then
begin
  if x[i] <= 0 then
    f[i] := (-x[i] * 3 - 18) / 6
  else if x[i] <= 3 then
    f[i] := -sqrt(R * R - x[i] * x[i])
  else if x[i] <= 6 then
    f[i] := sqrt(R * R - (x[i] - 6) * (x[i] - 6))
  else if x[i] <= 8 then
    f[i] := 0;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 23.05.2020 в 20:48.
BDA на форуме Ответить с цитированием
Старый 23.05.2020, 21:33   #3
demonforevo
Новичок
Джуниор
 
Регистрация: 23.05.2020
Сообщений: 4
По умолчанию

чтото неподходит или я чтото нетак делаю.
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls,
  VclTee.TeeGDIPlus;

type
  TForm1 = class(TForm)
    Chart1: TChart;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    Series1: TLineSeries;
    Series2: TBarSeries;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  const N=100;
  var
    xn,xk,dx,R,S:real;
    i:integer;
    f,x: array [1..100] of real;
implementation
uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
xn:=-10;
xk:=8;
dx:=(xk-xn)/N;
R:=2;
for i := 1 to N do begin
  x[i]:=xn+(i-1)*dx;
    if (x[i]>=-10) and (x[i]<=0) then
  f[i]:=(-x[i]*3-18)/6;
  if (x[i]>0) and (x[i]<=3) then
  f[i]:=sqrt(R*R-x[i]*x[i]);
  if (x[i]>3) and (x[i]<=6) then
  f[i]:=sqrt(R*R-x[i]*x[i]+36);
    if (x[i]>6) and (x[i]<=8) then
  f[i]:=0;
end;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked=true then
for i:= 1 to N do
Form1.Chart1.Series[0].AddXY(x[i],f[i]);

if CheckBox1.Checked=false then

Form1.Chart1.Series[0].Clear;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Chart1.Series[0].Clear;
Form1.Chart1.Series[1].Clear;
CheckBox1.Checked:=false;
CheckBox2.Checked:=false;
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
if CheckBox2.Checked=true then
for i:= 1 to N do
Form1.Chart1.Series[1].AddXY(x[i],f[i]);

if CheckBox2.Checked=false then

Form1.Chart1.Series[1].Clear;
end;

end.
вот целиком все что я наделал. рассчет и черчение графика привязано к кнопке1.
Код:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked=true then
for i:= 1 to N do
Form1.Chart1.Series[0].AddXY(x[i],f[i]);

if CheckBox1.Checked=false then

Form1.Chart1.Series[0].Clear;
end;
если можно подскажи как ее правильно воткнуть сюда я в этом деле совсем чайник)

Последний раз редактировалось BDA; 23.05.2020 в 22:02.
demonforevo вне форума Ответить с цитированием
Старый 23.05.2020, 22:41   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  xn := -10;
  xk := 8;
  dx := (xk - xn) / (N - 1);
  R := 3;
  for i := 1 to N do begin
    x[i] := xn + (i - 1) * dx;
    if x[i] <= 0 then
      f[i] := (-x[i] * 3 - 18) / 6
    else if x[i] <= 3 then
      f[i] := -sqrt(R * R - x[i] * x[i])
    else if x[i] <= 6 then
      f[i] := sqrt(R * R - (x[i] - 6) * (x[i] - 6))
    else
      f[i] := 0;
  end;
end;
Стоит увеличить количество точек для красоты. Плохо, что рисуется вертикальная линия при x = 6. Может быть, нужно рисовать график 2 кусками (в двух Series).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 24.05.2020, 09:22   #5
demonforevo
Новичок
Джуниор
 
Регистрация: 23.05.2020
Сообщений: 4
По умолчанию

Благодарю
demonforevo вне форума Ответить с цитированием
Старый 24.05.2020, 12:23   #6
demonforevo
Новичок
Джуниор
 
Регистрация: 23.05.2020
Сообщений: 4
По умолчанию

А и еще раз такое дело спрошу. checkbox как поменять цвет текста? в стандартном меню редактирования цвет выставляю красным но он не меняется. Как в просто color так и подменю font color. Может както програмно можно это прописать или еще что) Ну и если можно програмно сразу подскажи куда вставлять

Последний раз редактировалось demonforevo; 24.05.2020 в 12:25.
demonforevo вне форума Ответить с цитированием
Старый 24.05.2020, 19:35   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

У меня через инспектор объектов у чекбокса Font.Color меняет цвет текста чекбокса. Можно в событие OnCreate прописать:
Код:
CheckBox2.Font.Color := clBlue;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 24.05.2020 в 19:38.
BDA на форуме Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C++] Программирование разветвляющихся алгоритмов - вычислить значение кусочно-заданной функции от двух переменных Малой+- Помощь студентам 7 23.09.2017 21:15
Создать приложение для вычисления значений заданной функции Гарри Помощь студентам 1 14.10.2015 23:36
Для заданной функции Y=tgX: напечатать таблицу значений, изменяя Х от 0 до 80 с шагом 10 sasha_14-88 Помощь студентам 4 10.12.2014 13:15
РАСЧЕТ ЗНАЧЕНИЙ ФУНКЦИИ ДВУХ ПЕРЕМЕННЫХ Анчел Помощь студентам 0 31.05.2012 21:05