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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2007, 19:40   #31
Diller
Пользователь
 
Аватар для Diller
 
Регистрация: 21.06.2007
Сообщений: 55
По умолчанию

доброго времени суток, Дмитрий..
на мой взгляд все вроде правилльно..
если только вот если цикл в цикле не правильно работает.. если Вас не затруднит не могли бы объяснить в чем тут дело??

www.nnm.ru
۩۞۩___Смысл заключается,_______________۩۞۩
۩۞۩___Лишь в величине вашего разума____.۩۞۩
۩۞۩__♣™_Diller_™♣__۩۞۩
Diller вне форума Ответить с цитированием
Старый 26.06.2007, 20:01   #32
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
edit6.Text:=floattostr(razr);
razmer:=strtoint(edit6.Text);
Это такой способ преобразования float -> integer?
razmer:=trunc(razr);

Чему равен razmer?

Сколько строк у ttable?
Carbon вне форума Ответить с цитированием
Старый 26.06.2007, 20:28   #33
Diller
Пользователь
 
Аватар для Diller
 
Регистрация: 21.06.2007
Сообщений: 55
По умолчанию

Цитата:
Это такой способ преобразования float -> integer?
да.. глупо конешно , но я в делфи 2 неделю и никогда программированием не занимался..(делфи 1 язык), потому ничиго более оригинального не придулал
Цитата:
Чему равен razmer?
razr:=round(L/losk);
edit6.Text:=floattostr(razr);
razmer:=strtoint(edit6.Text);
Цитата:
Сколько строк у ttable?
я задал 30 ,но желательно чтоб менялось в зависимости от переменной razmer

www.nnm.ru
۩۞۩___Смысл заключается,_______________۩۞۩
۩۞۩___Лишь в величине вашего разума____.۩۞۩
۩۞۩__♣™_Diller_™♣__۩۞۩
Diller вне форума Ответить с цитированием
Старый 26.06.2007, 20:31   #34
Diller
Пользователь
 
Аватар для Diller
 
Регистрация: 21.06.2007
Сообщений: 55
По умолчанию

прикрепил файл с идеей ,чтобы легче было понять смысл моих расчетов
Вложения
Тип файла: doc Doc1.doc (35.0 Кб, 15 просмотров)

www.nnm.ru
۩۞۩___Смысл заключается,_______________۩۞۩
۩۞۩___Лишь в величине вашего разума____.۩۞۩
۩۞۩__♣™_Diller_™♣__۩۞۩
Diller вне форума Ответить с цитированием
Старый 26.06.2007, 20:46   #35
Diller
Пользователь
 
Аватар для Diller
 
Регистрация: 21.06.2007
Сообщений: 55
По умолчанию

у меня еще вопрос. как взять данные, записанные в таблице, stringgrid/
ну или у меня ttable.cells[i+1,1]:=floattostr(V[i]); чтобы использовать эти данные в дальнейших расчетах??

www.nnm.ru
۩۞۩___Смысл заключается,_______________۩۞۩
۩۞۩___Лишь в величине вашего разума____.۩۞۩
۩۞۩__♣™_Diller_™♣__۩۞۩
Diller вне форума Ответить с цитированием
Старый 26.06.2007, 20:49   #36
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Так же и брать: ttable.cells[i+1,1]
Carbon вне форума Ответить с цитированием
Старый 26.06.2007, 21:01   #37
Diller
Пользователь
 
Аватар для Diller
 
Регистрация: 21.06.2007
Сообщений: 55
По умолчанию

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

www.nnm.ru
۩۞۩___Смысл заключается,_______________۩۞۩
۩۞۩___Лишь в величине вашего разума____.۩۞۩
۩۞۩__♣™_Diller_™♣__۩۞۩
Diller вне форума Ответить с цитированием
Старый 27.06.2007, 01:51   #38
Diller
Пользователь
 
Аватар для Diller
 
Регистрация: 21.06.2007
Сообщений: 55
По умолчанию

ниже приведенный код проги работает до выделенного красным цветом . дальше ошибка, не могли бы её найти

код
Цитата:
const pi=3.14;
var a,b,c,L,losk,x1,x2,D,xmax,ymin,ymax ,x,razr,rmax,r,xmin,
mindiam,maxdiam : real;
i,razmer:integer;
V: array of real;
begin
a:=strtofloat(Edit1.text);
b:=strtofloat(Edit2.text);
c:=strtofloat(Edit3.text);
losk:=strtofloat(Edit4.text);
L:=strtofloat(Edit5.text);

if a<0 then
begin
showmessage('Неправильно введено значение a. А -СТРОГО ПОЛОЖИТЕЛЬНОЕ ЧИСЛО');
end
else
begin
if abs(a)<0.000001 then
begin
if b=0 then
showmessage('При a=0 неправильно введено значение b. b - не равно "0"')
else
begin
razr:=round(L/losk);
edit6.Text:=floattostr(razr);
razmer:=strtoint(edit6.Text);
edit7.Text:=floattostr(razmer);
SetLength(V,razmer);
x:=10;
ymin:=b*(10)+c+losk;
edit8.Text:=floattostr(ymin);
ymax:=L+ymin;
xmax:=(ymax-c-losk)/b;
edit8.Text:=floattostr(xmax);
for i:=0 to razmer-1 do
begin
repeat
ymin:=b*x+c+losk;
ymax:=losk+ymin;
rmax:=(ymax-c)/b;
r:=(rmax+x)/2;
V[i]:=pi*r*r*losk;
ttable.cells[i+1,1]:=floattostr(V[i]);
x:=rmax;
until x>=xmax;
end;
end;
end
else
begin
razr:=round(L/losk);
edit6.Text:=floattostr(razr);
razmer:=strtoint(edit6.Text);
edit7.Text:=floattostr(razmer);
SetLength(V,razmer);
ymax:=L+a*(-10+(-b/(2*a)))*(-10+(-b/(2*a)))+b*(-10+(-b/(2*a)))+c+losk;
d:=b*b - 4*a*(c-ymax);
if d<0then
begin
showmessage('Неправильно введены a,b или c');
end
else
begin
x1:=(-b - sqrt(d))/(2*a);
{ x2:=(-b + sqrt(d))/(2*a); }
xmin:=x1;{до этого значения считаем в цикле}
mindiam:=20;{условие мин диаметра}
x:=-10+((-b)/(2*a));
for i:=0 to razmer-1 do
begin
repeat
ymin:=a*(x+(-b/(2*a)))*(x+(-b/(2*a)))+b*(x+(-b/(2*a)))+c+losk;
ymax:=ymin+losk;
d:=b*b - 4*a*(c-ymax);
if d<0then
begin
showmessage('Неправильно введены a,b или c');
end
else
begin
x1:=(-b - sqrt(d))/(2*a);
x2:=(-b + sqrt(d))/(2*a);
maxdiam:=x2-x1;
r:=((maxdiam/2)+(mindiam/2))/2 ;
V[i]:=pi*r*r*losk;
ttable.cells[i+1,2]:=floattostr(V[i]);
mindiam:=maxdiam;
x:=x1;
end;
until x>=xmin;
end;
end;
end;
end;
end;

www.nnm.ru
۩۞۩___Смысл заключается,_______________۩۞۩
۩۞۩___Лишь в величине вашего разума____.۩۞۩
۩۞۩__♣™_Diller_™♣__۩۞۩
Diller вне форума Ответить с цитированием
Старый 27.06.2007, 01:53   #39
Diller
Пользователь
 
Аватар для Diller
 
Регистрация: 21.06.2007
Сообщений: 55
По умолчанию

вот не работающая часть begin
razr:=round(L/losk);
edit6.Text:=floattostr(razr);
razmer:=strtoint(edit6.Text);
edit7.Text:=floattostr(razmer);
SetLength(V,razmer);
ymax:=L+a*(-10+(-b/(2*a)))*(-10+(-b/(2*a)))+b*(-10+(-b/(2*a)))+c+losk;
d:=b*b - 4*a*(c-ymax);
if d<0then
begin
showmessage('Неправильно введены a,b или c');
end
else
begin
x1:=(-b - sqrt(d))/(2*a);
{ x2:=(-b + sqrt(d))/(2*a); }
xmin:=x1;{до этого значения считаем в цикле}
mindiam:=20;{условие мин диаметра}
x:=-10+((-b)/(2*a));
for i:=0 to razmer-1 do
begin
repeat
ymin:=a*(x+(-b/(2*a)))*(x+(-b/(2*a)))+b*(x+(-b/(2*a)))+c+losk;
ymax:=ymin+losk;
d:=b*b - 4*a*(c-ymax);
if d<0then
begin
showmessage('Неправильно введены a,b или c');
end
else
begin
x1:=(-b - sqrt(d))/(2*a);
x2:=(-b + sqrt(d))/(2*a);
maxdiam:=x2-x1;
r:=((maxdiam/2)+(mindiam/2))/2 ;
V[i]:=pi*r*r*losk;
ttable.cells[i+1,2]:=floattostr(V[i]);
mindiam:=maxdiam;
x:=x1;
end;
until x>=xmin;
end;
end;
end;
end;
end;

www.nnm.ru
۩۞۩___Смысл заключается,_______________۩۞۩
۩۞۩___Лишь в величине вашего разума____.۩۞۩
۩۞۩__♣™_Diller_™♣__۩۞۩
Diller вне форума Ответить с цитированием
Старый 27.06.2007, 11:49   #40
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
а как очистить таблицу поле расчета..
for i:=0 to ttable.ColCount-1 do
for j:=0 to ttable.RowCount-1 do
ttable.Cells[i,j]:='';
Carbon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамический массив Dimon Паскаль, Turbo Pascal, PascalABC.NET 3 21.03.2008 18:08
Динамический массив _ares_ Паскаль, Turbo Pascal, PascalABC.NET 3 26.12.2007 23:54
Динамический массив. Mickle Помощь студентам 9 21.06.2007 20:31
Динамический массив Mickle Общие вопросы Delphi 8 19.06.2007 06:45
Динамический массив + Dll. LEKA Общие вопросы Delphi 7 11.05.2007 20:05