Текущий архив: 2004.03.28;
Скачать: CL | DM;
Вниз
Компилятор выдает ошибку Найти похожие ветки
← →
VasRog © (2004-03-06 18:40) [0]Тему почему-то потерли, поэтому спрошу еще раз:
uses
...Math...
var
xc1:real;
xp1:array of real;
.......
xc1:= Mean(xp1);
Компилятор выдает: Incompatible types: "Array and Dynamic array" т.е. по-видимому хочет сказать, что xp1 должен быть обычным массивом? Так ли я понимаю и можно ли как-нибудь оставить его динамическим массивом.
И второй вопрос: предусмотрена ли в Дельфи функция возведения числа в произвольную(дробную степень)?
← →
Алхимик © (2004-03-06 18:59) [1]1.
Type
TMyType = array of Double;
...
xp1 : TMyType;
2.
Power F1
← →
VasRog © (2004-03-08 16:29) [2]Power F1
А можно поподробнее какие аргументы вписать(куда показатель степени и куда основание)?
← →
TUser © (2004-03-08 16:42) [3]Надо хр1 описывать не как array, а как некий тобою определенный тип.
← →
VasRog © (2004-03-08 17:06) [4]Да я не про то. Я про функцию возведения числа в произвольную(дробную степень). Как ее прописать?
← →
TUser © (2004-03-08 17:43) [5]Так тебе уже 2 раза ответили
Delphi syntax:
function Power(const Base, Exponent: Extended): Extended;
Extended + F1
← →
VasRog © (2004-03-08 19:29) [6]Extended + F1
А что это строчка значит?
← →
TUser © (2004-03-08 19:54) [7]Это значит, что надо набрать в Editor"е "extended", подвести туда курсор и нажать F1. Ты получишь справку по этому типу, откуда узнаеш, что это как раз и есть что-то "произвольное (дробное)". Конечно, оно не совсем произвольное, есть там свои ограничения, но совсем произвольных числе ни в одном языке программирования нет.
← →
VasRog © (2004-03-08 20:41) [8]Пишу
...+(sqr(sqr(x[i,2]))*x[i,4]*(0.2*x[i,1]+x[i,3]/12) - 2.2*Power(8.94*(x[i,1]+sqrt(sqr(x[i,3])-sqr(x[i,2]))),4/3))+...
компилятор все проглатывает, но потом в проге возникает ошибка: "Invalid floating point operation". Неверно написал?
← →
TUser © (2004-03-08 20:48) [9]Проверь - скорее всего ты берешь корень из отрицательного числа. Используй try ... except.
← →
VasRog © (2004-03-08 22:10) [10]А вот такой вопрос. Имеется:
repeat
.....
until
((...)>0) and ((...)>0) and ...;
Будет ли компилятор проверять все условия until или если какое-нибудь условие не выполняется(например, второе) он последующие условия проигнорирует и проверять не будет(третье и далее)?
← →
Jel © (2004-03-09 10:06) [11]Если поставишь {$B+} то будет проверять все. По умолчанию вычисления идут пока не станет ясен результат выражения.
← →
TUser © (2004-03-09 10:27) [12]Про [11] я не знал, но вот точно могу сказать, что на
if (i<length(myarray)) and (myarray[i]<...) then ...
выдается av, если i=length(myarray). Т.е. вычисляются все части логического выражения. Но мб с репитом все как-то по-другому ...
← →
Плохиш (2004-03-09 10:39) [13]>TUser © (09.03.04 10:27) [12]
Обработка операторов не зависит от того где они записаны в if-е или until-е или while
← →
VasRog © (2004-03-09 12:55) [14]М-да. Странно все это. У меня в проге встречаются 3 конструкции:
1. if (( [1] )>=0) and (( [2] )>=0) and (( [3] )>=0) and (( [4] )>=0) and (( [5] )>=0) then
2. if (( [1] )<0) or (( [2] )<0) or (( [3] )<0) or (( [4] )<0) or (( [5] )<0) then
3. until ( [1] )>=0) and (( [2] )>=0) and (( [3] )>=0) and (( [4] )>=0) and (( [5] )>=0;
В [2] содержится корень sqrt(sqr(x3) - sqr(x2)). А [5] - это ограничение x3-x2>=0. Когда все было таким образом записано прога в самом начале вычислений выдавала
Invalid floating point operation. Если поменять местами во всех конструкциях [5] и [2], то прога начинает вычислять, но все равно в процессе вычисления
вылазит Invalid floating point operation и облом. Собственно вопрос: как сие пофиксить?
← →
Anatoly Podgoretsky © (2004-03-09 12:59) [15]Не использовать недопустимых значений в выражении, например корня квадратного из отричательного числа. Значения должны быть допустимые.
← →
VasRog © (2004-03-09 21:55) [16]Ну дык вроде бы это прописано - [5].
Страницы: 1 вся ветка
Текущий архив: 2004.03.28;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.026 c