Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
Внизопять этот Invalid floating .... Найти похожие ветки
← →
style007 © (2007-05-19 00:59) [0]Опять тормозит всю работу сообщение Invalid floatingpoint operation!!! Может кто со свежей головой сразу укажет на ошибку? Спасибо!
//строит последовательность случайных чисел методом произведений
procedure random_numbers(var a:mas; l1,l2:real; n :integer);
var t :real;
i,j,p,k1,k2 :integer;
begin
a[1] := l1;
a[2] := l2;
k1 := quantity_of_numbers(a[1]);
for i := 3 to n do
begin
a[i] := a[i-1]*a[i-2];
k2 := quantity_of_numbers(a[i]);
p := 1; // ВОТ НА ЭТУ СТРОКУ УКАЗЫВАЕТ ERROR!!!!
for j := 1 to ((k2 div 2) - (k1 div 2)) do
p := p * 10;
{t := a[i]*p - floor(a[i]*p); }//***************************** ??????
if t*10<1 then
{t := t + (floor(a[i]*p) mod 10)/10;} //****************????
p :=1;
for j := 1 to k1 do
p := p * 10;
{a[i] :=floor(t*p)/p;} //***********************************????
end;
end;
← →
zap8 (2007-05-19 06:05) [1]Скорее всего ты обращаешся к массиву c
длиной (выделенной памятью) меньше чем значение i
вот в этой строчке k2 := quantity_of_numbers(a[i]);
← →
zap8 (2007-05-19 06:08) [2]Или ошибка в функции quantity_of_numbers.
← →
style007 © (2007-05-19 09:38) [3]Вот и другая ф-ия:
/подсчитывает кол-во цифр в числе
function quantity_of_numbers(x :real):integer;
var k :integer;
fl:bool;
begin
k := 0;
fl := false;
repeat
k := k + 1;
x := x*10;
if (round(x) mod 10) = 0 then
begin
if (((round(x*10) mod 10) = 0) and
((round(x*100) mod 10) = 0) and
((round(x*1000) mod 10) = 0) and
((round(x*10000) mod 10) = 0)) then
fl := true;
end;
until(fl);
quantity_of_numbers := k - 1;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.06.10;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.267 c