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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2012, 21:40   #1
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
Вопрос Построение графика y=kx+b

Вот код
Код:
var x0,y0: Integer; // начало координат по х и у
    x,y: Extended;  // расчет х и у
    m: integer;     // масштаб
begin
  x0 := ClientWidth div 2;  //узнаем центр формы по х
  y0 := ClientHeight div 2; // узнаем центр формы по у

  // чертим х ось
  Canvas.MoveTo(0, y0);
  Canvas.LineTo(ClientWidth, y0);

  // чертим у ось
  Canvas.MoveTo(x0, 0);
  Canvas.LineTo(x0, ClientHeight);

  m:=StrToInt(Edit2.Text);  //задаем масштаб, иначе будет очень мелкий график

  x:=StrToInt(Edit3.Text);  // зададим диапазон от куда до куда будем считать наш график

  // собственно прорисовывем
  while x <= m do
    begin
      x := x + 0.01;
      y := strtofloat(Edit1.Text);//3*x-4;
      Canvas.Pixels[x0+Round(x*m), y0-Round(y*m)] := clGreen;

    end;

end;
Всё строится,только без участия полей Edit,а нужно с ними)Дело в том,что когда я ввожу в поле Edit1 функцию 3*x-4 то появляется ошибка '3*x-4'is not a valid integer point value .Как её исправить?Там по идее это поле нужно в какой-то другой тип данных преобразовать?Никак понять не могу.
Mrsqler вне форума Ответить с цитированием
Старый 28.03.2012, 21:52   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

A*x+B - два эдита, в одном задавать значение A, в другом - B
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 28.03.2012, 21:54   #3
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

А как сделать без эдитов?Просто вводить значения.Или это сложно очень реализовать?
Mrsqler вне форума Ответить с цитированием
Старый 28.03.2012, 21:57   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В принципе есть сторонние компоненты или библиотеки реализующие работу с формулами. Вам это надо?
Цитата:
А как сделать без эдитов
Без эдитов константами прописать или параметрами передать или через ini-файл и т.п.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 28.03.2012 в 21:59.
Аватар вне форума Ответить с цитированием
Старый 28.03.2012, 22:04   #5
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

А можете пример какой-нибудь привести?Просто я недавно этим занимаюсь)
Mrsqler вне форума Ответить с цитированием
Старый 28.03.2012, 22:13   #6
Triplecool
Пользователь
 
Регистрация: 25.03.2012
Сообщений: 15
По умолчанию

Вижу что Вы в программировании не очень. Вот для примера моя программа: http://ingosoft.narod2.ru/michel/function .если будут вопросы то пишите на мейл michellehcim@mail.ru
Вот код:

Код:
function Raschet(str:string;x:double):Double;
var i,len,c:integer;
var str:string;
var v:array [1..100] of double;
var operation:array [1..100] of string;
var dble:double
begin
c:=0;
len:=length(str);

for i:=1 to len do

zn:=copy(str,i,1);

if (((zn='+') or (zn='-')) or (zn='*')) or (zn='/') then
begin
if copy(str,i+1,1)<>'x' then
begin
c:=c+1;
v[c]:=StrToFloat(copy(str,i+1,len-(i+1)));
operation[c]:=zn;
end
else
if copy(str,i+1,1)='x' then
begin
c:=c+1;
v[c]:=x;
operation[c]:=zn;
end;
end
if i=len then
begin
if copy(str,i+1,1)<>'x' then
begin
c:=c+1;
v[c]:=StrToFloat(copy(str,i+1,len-i));
operation[c]:=zn;
end
else
if copy(str,i+1,1)='x' then
begin
c:=c+1;
v[c]:=x;
operation[c]:=zn;
end;
end; 


end;



//++++++++++++++++
for i:=1 to c do
begin
if operation[c]='*' then
begin
v[i]:=v[i]*v[i+1];
v[i+1]:=v[i];
dble:=v[i];
end
else
if operation[c]='/' then
begin
if v[i+1]<>0 then
begin
v[i]:=v[i]/v[i+1];
v[i+1]:=v[i];
dble:=v[i];
end;
end;

end;



//=============
for i:=1 to c do
begin
if operation[c]='+' then
begin
v[i]:=v[i]+v[i+1];
v[i+1]:=v[i];
dble:=v[i];
end
else
if operation[c]='-' then
begin
v[i]:=v[i]-v[i+1];
v[i+1]:=v[i];
dble:=v[i];
end;

end;


result:=dble;
end;
Triplecool вне форума Ответить с цитированием
Старый 28.03.2012, 22:26   #7
Triplecool
Пользователь
 
Регистрация: 25.03.2012
Сообщений: 15
По умолчанию

Его просто использовать (если хотите то могу дать функцию которая вычесляет sin,cos,tg,ctg,arcsin,arccos,arctg, arcctg,sqrt,^).Например:

Код:
for i:=-1000 to 1000 do
begin
x:=Raschet(Edit1.Text,i*0.1);
y:=i*0.1;
//тут чертим
...
...
...
//тут чертим
end;

Последний раз редактировалось Triplecool; 28.03.2012 в 22:37.
Triplecool вне форума Ответить с цитированием
Старый 28.03.2012, 23:36   #8
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

Да, буду благодарен)Выложите данную функцию,мне полезно будет,может и другим тоже пригодится)
В программировании да,не очень,я только-только учусь...
Mrsqler вне форума Ответить с цитированием
Старый 30.03.2012, 20:02   #9
Mrsqler
Форумчанин
 
Регистрация: 13.02.2012
Сообщений: 146
По умолчанию

Так как все таки это реализовать?Чтобы я вводил в поле Edit функцию и она строилась...а не создавать дополнительные Edit и в них вводить что-то.
Mrsqler вне форума Ответить с цитированием
Старый 30.03.2012, 20:43   #10
Triplecool
Пользователь
 
Регистрация: 25.03.2012
Сообщений: 15
По умолчанию

Я же написал

Код:
Код:

for i:=-1000 to 1000 do
begin
x:=Raschet(Edit1.Text,i*0.1);//Вот он тот самый edit
y:=i*0.1;
//тут чертим
...
...
...
//тут чертим
end;
Triplecool вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построение графика AnderoN Помощь студентам 0 09.05.2011 22:35
Построение графика radiokarazinec Общие вопросы Delphi 14 24.02.2011 23:39
построение графика alla _ zip Помощь студентам 2 12.05.2010 22:12
построение Графика на с++ 4ika Помощь студентам 0 04.05.2010 20:37
построение графика tanka123 Microsoft Office Excel 1 17.06.2009 09:17