|
#1
|
|||
|
|||
Расчетная задачка
доброго времени суток всем! У меня такая задача никак нимогу осилить сам:
Задача для расчета и последующего построения графика по найденым значениям. Суть: В ходе лабораторной мы делаем от 1 до N опытов. Так вот нам нужно ввести кол-во режимов по которым сделаны замеры, вводим. Далее пользователь вводит 4 показателя LT,LD,ZT,ZD снятых в ходе лабы. Пошел расчет по формулам: Код:
ft:=lt*165; fd:=ld*195; u:=ft*2*fod; e:=(1-zt/zd)*100; h:=(ft*zt)/(fd*zd)*100; Требуется чтобы после введения LT,LD,ZT,ZD происходил расчет и в зависимости от введенного кол-ва опытов он повторялся с новыми вновь введенными LT,LD,ZT,ZD, т.е если опытов 5 то ввели посчитали, записали в StringGrid, обнулили поля снова заполнили новыми значениями посчитали, записали и так далее!!! В конце нужно начертить график зависимости . Построить графики зависимостей E и H от U. Никак не могу осилить.. Прошу помоч с решением данной задачи!!! Заранее спасибо!!! |
#2
|
||||
|
||||
Помочь-то мы можем, но что именно не получается? Как насчёт выложить код и показать "проблемный участок"?
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
|||
|
|||
если нужен код то постараюсь завтра выложить! а вообще не могу догнать как организовать цикл для N опытов(как именно данные из формы забирать,потом опять вводить если опытов >1) и по результатам график построить!!
Как то вот не могу сообразить как это имеено в Delphi сделать грамотно!! |
#4
|
|||
|
|||
можно сделать доп. формой, которая будет показываться для ввода данных при каждой итерации цикла.
Код:
uses EnterFrm; // форма для ввода данных ... for i := 1 To N Do // N берется от пользователя - кол-во опытов begin EnterForm.ShowModal; LT := StrToInt(EnterForm.Edit1.text); ... // далее идет расчет и накопление значений в массиве end; // теперь у нас есть массив данных, строим по нему график. |
#5
|
|||
|
|||
т.е нужно изначально массив создавать?
И как туда записать все вычисления? например из 3х проделаных циклов? и потом как из массива построить график, с TChart немогу разобраться.. вот фрагмент кодаэто после того как вводим кол-во режимов и нажимаем кнопку расчет) Цитата:
как накапливать и записать массив?? подскажите что дальше нужно делать? Последний раз редактировалось glorx, 14.12.2010 в 16:26. |
#6
|
||||
|
||||
А запустить цикл из N лабораторных религия не позволяет?
Код:
procedure TForm1.btn6Click(Sender: TObject); var i,n,D:Integer; Lt,Ld,Zt,Zd,Ft,Fd,U,E,H,fod,fi1,e1,n1:real; begin EnterFrm.visible:=True; n:=StrToInt(Form1.lbledt23.text); //============запускаем цикл==================== for d:=1 to n do begin //=============================== fod:=strtofloat(Form1.lbledt20.Text); for i:=1 to n do begin EnterFrm.ShowModal; EnterFrm.Caption:='Введите данные'+IntToStr(n)+' лабораторной'; EnterFrm.lbl2.Caption:=IntToStr(i); Lt:=StrTofloat(EnterFrm.lbledt21.text); Ld:=StrTofloat(EnterFrm.lbledt22.text); Zt:=StrTofloat(EnterFrm.lbledt28.text); Zd:=StrTofloat(EnterFrm.lbledt29.text); Ft:=Lt*165; //усилие тормоза Fd:=Ld*195; // усилие двигателя U:=Ft/2*fod; // коэф.тяги E:=(1-(Zt/Zd))*100; // скольжение H:=((Ft*Zt)/(Fd/Zd))*100; // КПД StringList1.Cells[0,n]:=//что ты хочешь вывести end; end; end; ИЛИ Я тебя не правильно понял???? Ну а данные для TChart ты всегда можешь взять из StringList Последний раз редактировалось Admin, 14.12.2010 в 17:11. |
#7
|
|||
|
|||
У StringList разве Cells Есть???
пробовал с StringList.Text... запустилось но после нажатия на кнопку для которой обработчик написан ошибка появляется: http://i044.radikal.ru/1012/a0/48146871f67a.jpg в чем проблема?? Последний раз редактировалось glorx, 14.12.2010 в 20:33. |
#8
|
||||
|
||||
Цитата:
|
#9
|
|||
|
|||
Цитата:
Delphist подскажи, продолжи пажалста свою идею. |
#10
|
||||
|
||||
c каких пор у StringGrid нет Cells
знаете почему внизу эскалатора бабка в будке сидит? она там педальки крутит и лесенка едет! |
#11
|
|||
|
|||
Цитата:
вообще ошибка то при нажати на кнопку.. что то неверно в обработчике.. В чем пробема помогите.. |
#12
|
|||
|
|||
итак напишу что нужно получить:
1 форма: там идут сторонние расчеты и вводится N - кол-во режимов, и есть кнопка при нажатии на которую появляется форма с вводом данных для N-ого режима!! Данные вводятся нажимается кнопка, форма появляется вновь если опытов(режимов )>1... в конце в таблицу записываются все полученные значения для всех посчитаных режимов и стоятся графики!! Что получилось: Это обработчик для кнопки первой формы: Код:
procedure TForm1.btn6Click(Sender: TObject); var i,n,D:Integer; Lt,Ld,Zt,Zd,Ft,Fd,U,E,H,fod,fi1,e1,n1:real; begin n:=StrToInt(Form1.lbledt23.text); //============запускаем цикл==================== for d:=1 to n do begin //=============================== fod:=strtofloat(Form1.lbledt20.Text); for i:=1 to n do begin EnterFrm.ShowModal; EnterFrm.Caption:='Введите данные '+IntToStr(n)+' режима'; // EnterFrm.lbl2.Caption:=IntToStr(i); Lt:=StrTofloat(EnterFrm.lbledt21.text); Ld:=StrTofloat(EnterFrm.lbledt22.text); Zt:=StrTofloat(EnterFrm.lbledt28.text); Zd:=StrTofloat(EnterFrm.lbledt29.text); Ft:=Lt*165; //усилие тормоза Fd:=Ld*195; // усилие двигателя U:=Ft/2*fod; // коэф.тяги E:=(1-(Zt/Zd))*100; // скольжение H:=((Ft*Zt)/(Fd/Zd))*100; // КПД Form1.strngrd1.Cells[1,n]:=floatToStr(Ft); Form1.strngrd1.Cells[2,n]:=floatToStr(Fd); Form1.strngrd1.Cells[3,n]:=floatToStr(U); Form1.strngrd1.Cells[4,n]:=floatToStr(E); Form1.strngrd1.Cells[5,n]:=floatToStr(H); end; end; end; еще сделал StringGrid так вот записывает только последний опыт!! Что не так??кроме кривых рук конечно=) Последний раз редактировалось glorx, 14.12.2010 в 21:29. |
#13
|
||||
|
||||
У тебя ведь в мессаге белым по черному написано в чем дело! Удали это:
Код:
EnterFrm.visible:=True; Меня греют ваши плюсы к моей репутации... |
#14
|
|||
|
|||
Цитата:
|
#15
|
||||
|
||||
В StringGrid'е второе не n, а i должно быть.
Меня греют ваши плюсы к моей репутации... |