IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

3 страниц V < 1 2 3  
Closed Topic Открыть новую тему 
> Обработка прямоугольных матриц
volvo
сообщение 19.08.2005 17:43
Сообщение #41


Гость






 const
NMAX = 20;
MMAX = 20;

увеличивать не пробовал? У тебя же опять выход за пределы матрицы должен произойти (файл большой, а матрица - маленькая...)
 К началу страницы 
+ Ответить 
volvo
сообщение 19.08.2005 18:08
Сообщение #42


Гость






А вот и причина возникающей ошибки (RunTime Error 200 - "Деление на 0"):
function Gamma(x: extended): extended;
{ ... }
begin { gamma function }
If x=0 then gamma := 1;
If x>0.0 then begin { ... } end
else { x<0 } begin
{ ... }
gam:=gamma(y);{ recursive call }
for i:=0 to j-1 do
gam:=gam/(x+i); { <--- Здесь !!! }
Gamma:=gam
end { x<0 }
end; { gamma function }

В указанном мной месте при вычислении Funk[10, 10] у тебя одновременно i = 0 и x = 0 (да, да... При х = 0 ты только присваиваешь функции значение 1, но не выходишь из нее !!!)

P.S. Возможный путь решения проблемы:
If x = 0 Then Begin Gamma := 1; Exit End;
{ Далее - по тексту... }
 К началу страницы 
+ Ответить 
ProtasSoft
сообщение 19.08.2005 18:33
Сообщение #43


Новичок
*

Группа: Пользователи
Сообщений: 33
Пол: Мужской

Репутация: -  0  +


Можно это так обойти

function Gamma(x: extended): extended;
const
pi = 3.1415926;

var
i,j : integer;
y,gam : extended;

begin { gamma function }
If x=0 then gamma:=1;
if x>0.0 then
begin
y:=x+2.0;
gam:=sqrt(2*pi/y)*exp(y*ln(y)+(1-1/(30*y*y))/(12*y)-y);
Gamma:=gam/(x*(x+1))
end;
if x<0 then
begin {x<0}
j:=0;
y:=x;
repeat
j:=j+1;
y:=y+1.0
until y>0.0;
gam:=gamma(y); { recursive call }
for i:=0 to j-1 do
gam:=gam/(x+i);
Gamma:=gam
end; { x<0 }
end; { gamma function }

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 19.08.2005 18:46
Сообщение #44


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Так к слову : в паскале есть встроенная константа Pi


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 19.08.2005 18:50
Сообщение #45


Гость






Цитата(klem4 @ 19.08.05 18:46)
Так к слову : в паскале есть встроенная константа Pi

:yes: ProtasSoft, ты будешь смеяться, но и функция Power тоже есть (в модуле Math)
 К началу страницы 
+ Ответить 

3 страниц V < 1 2 3
Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.06.2025 1:11
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"