Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.12.2010, 21:46
glorx glorx вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 33
Репутация: 10
По умолчанию Расчетная задачка

доброго времени суток всем! У меня такая задача никак нимогу осилить сам:
Задача для расчета и последующего построения графика по найденым значениям.

Суть: В ходе лабораторной мы делаем от 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;
fod-было посчитано раньше и просто берется значение от туда.
Требуется чтобы после введения LT,LD,ZT,ZD происходил расчет и в зависимости от введенного кол-ва опытов он повторялся с новыми вновь введенными LT,LD,ZT,ZD, т.е если опытов 5 то ввели посчитали, записали в StringGrid, обнулили поля снова заполнили новыми значениями посчитали, записали и так далее!!!
В конце нужно начертить график зависимости . Построить графики зависимостей E и H от U.

Никак не могу осилить.. Прошу помоч с решением данной задачи!!!
Заранее спасибо!!!
Ответить с цитированием
  #2  
Старый 13.12.2010, 21:50
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Помочь-то мы можем, но что именно не получается? Как насчёт выложить код и показать "проблемный участок"?
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #3  
Старый 13.12.2010, 23:18
glorx glorx вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 33
Репутация: 10
По умолчанию

если нужен код то постараюсь завтра выложить! а вообще не могу догнать как организовать цикл для N опытов(как именно данные из формы забирать,потом опять вводить если опытов >1) и по результатам график построить!!
Как то вот не могу сообразить как это имеено в Delphi сделать грамотно!!
Ответить с цитированием
  #4  
Старый 13.12.2010, 23:38
lmikle lmikle сейчас на форуме
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,025
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

можно сделать доп. формой, которая будет показываться для ввода данных при каждой итерации цикла.

Код:
uses
   EnterFrm; // форма для ввода данных

...

for i := 1 To N Do // N берется от пользователя - кол-во опытов
  begin
    EnterForm.ShowModal;
    LT := StrToInt(EnterForm.Edit1.text);
    ...
    // далее идет расчет и накопление значений в массиве
  end;

// теперь у нас есть массив данных, строим по нему график.
Ответить с цитированием
  #5  
Старый 14.12.2010, 14:50
glorx glorx вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 33
Репутация: 10
По умолчанию

т.е нужно изначально массив создавать?
И как туда записать все вычисления? например из 3х проделаных циклов?
и потом как из массива построить график, с TChart немогу разобраться..

вот фрагмент кодаэто после того как вводим кол-во режимов и нажимаем кнопку расчет)
Цитата:
procedure TForm1.btn6Click(Sender: TObject);
var i,n:Integer;
Lt,Ld,Zt,Zd,Ft,Fd,U,E,H,fod,fi1,e1,n1:real;
begin
EnterFrm.visible:=True;
n:=StrToInt(Form1.lbledt23.text);
fod:=strtofloat(Form1.lbledt20.Text);
for i:=1 to n do
begin
EnterFrm.lbl2.Caption:=IntToStr(i);
EnterFrm.ShowModal;
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; // КПД
end;

end;

как накапливать и записать массив?? подскажите что дальше нужно делать?

Последний раз редактировалось glorx, 14.12.2010 в 16:26.
Ответить с цитированием
  #6  
Старый 14.12.2010, 16:46
Аватар для Delphist
Delphist Delphist вне форума
Новичок
 
Регистрация: 10.12.2010
Адрес: Курган
Сообщения: 68
Репутация: 6002
По умолчанию

А запустить цикл из 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;
Admin: Пользуемся тегами для оформления кода!

ИЛИ Я тебя не правильно понял????

Ну а данные для TChart ты всегда можешь взять из StringList

Последний раз редактировалось Admin, 14.12.2010 в 17:11.
Ответить с цитированием
  #7  
Старый 14.12.2010, 20:26
glorx glorx вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 33
Репутация: 10
По умолчанию

У StringList разве Cells Есть???
пробовал с StringList.Text... запустилось но после нажатия на кнопку для которой обработчик написан ошибка появляется:
http://i044.radikal.ru/1012/a0/48146871f67a.jpg
в чем проблема??

Последний раз редактировалось glorx, 14.12.2010 в 20:33.
Ответить с цитированием
  #8  
Старый 14.12.2010, 20:33
Аватар для deltas
deltas deltas вне форума
Новичок
 
Регистрация: 22.11.2010
Сообщения: 99
Репутация: 47
По умолчанию

Цитата:
Сообщение от glorx
У StringList разве Cells Есть???
пробовал с StringList.Text... запустилось но после нажатия на кнопку для которой обработчик написан ошибка появляется:
в чем проблема??
А может StringList.Items ?
Ответить с цитированием
  #9  
Старый 14.12.2010, 20:45
glorx glorx вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 33
Репутация: 10
По умолчанию

Цитата:
А может StringList.Items ?
Нет такого!! как быть?
Delphist подскажи, продолжи пажалста свою идею.
Ответить с цитированием
  #10  
Старый 14.12.2010, 20:48
Аватар для SerginhoLD
SerginhoLD SerginhoLD вне форума
Новичок
 
Регистрация: 19.11.2009
Сообщения: 73
Репутация: 12
По умолчанию

c каких пор у StringGrid нет Cells
__________________
знаете почему внизу эскалатора бабка в будке сидит?
она там педальки крутит и лесенка едет!
Ответить с цитированием
  #11  
Старый 14.12.2010, 20:51
glorx glorx вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 33
Репутация: 10
По умолчанию

Цитата:
c каких пор у StringGrid нет Cells
у грид есть у List Нету!!!! внимательней пажалста..

вообще ошибка то при нажати на кнопку.. что то неверно в обработчике..
В чем пробема помогите..
Ответить с цитированием
  #12  
Старый 14.12.2010, 21:25
glorx glorx вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 33
Репутация: 10
По умолчанию

итак напишу что нужно получить:
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;
что нужно прописывать в обработчике кнопки для второй формы, чтобы данные вводилиь n раз??

еще сделал StringGrid так вот записывает только последний опыт!!

Что не так??кроме кривых рук конечно=)

Последний раз редактировалось glorx, 14.12.2010 в 21:29.
Ответить с цитированием
  #13  
Старый 14.12.2010, 21:26
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

У тебя ведь в мессаге белым по черному написано в чем дело! Удали это:
Код:
EnterFrm.visible:=True;
__________________
Меня греют ваши плюсы к моей репутации...
Ответить с цитированием
  #14  
Старый 14.12.2010, 21:29
glorx glorx вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 33
Репутация: 10
По умолчанию

Цитата:
У тебя ведь в мессаге белым по черному написано в чем дело! Удали это:
Код:
EnterFrm.visible:=True;
С этим разобрался! Смотрите пост выше..
Ответить с цитированием
  #15  
Старый 14.12.2010, 21:39
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

В StringGrid'е второе не n, а i должно быть.
__________________
Меня греют ваши плюсы к моей репутации...
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:35.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter