![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 23.04.2010
Сообщений: 52
|
![]()
вот программа,строка выделенная где ошибка:
uses crt; Type mas=array[1..19,1..19] of real; Type mas1=array[1..10] of real; var F:mas; X1,X2,minY,Z:mas1; t1,z2,z1,t,dt,tk,tp,xp1,xp2,xk1,xk2 ,dx1,dx2,minF,minF1,mx,my,minX1,min X2:real; i,n,j,u,grDriver,grMode,y,yy,x,xx,p x,py,px1,py1:integer; grPath,l,s:string; {подпрограмма формирования одномерных массивов} procedure form(xn:mas1;xp,xk:real); var dx,x:real; k:integer; begin k:=10; x:=xp; dx:=(xk-xp)/(k-1); for i:=1 to 10 do begin xn[i]:=x; x:=x+dx; end; end; {-----------------------------------------------------} {подпрограмма-функция сопративления} function a(h:real):real; begin a:=0.273*(sin(3*h+3)/h)/(cos(3*h+3)/h); end; {передаточная ф-я} function b(a,b,te:real):real; begin b:=exp(4*ln(a))-0.9*b+sqr(a)+2*a+ exp(6*ln(a))*b/3; { - вот тут "*Ошибка: вещественное деление на 0 (Program4.pas, строка 34)"} end; {Подпрограмма формирования двумерного массива} procedure miF(x:mas;k1,k2:mas1;var miF:real;var miX1,miX2:real); begin miF:=F[1,1]; miX1:=k1[1]; miX2:=k2[1]; for u:=1 to n do begin for j:=1 to n do begin {Модуль1:поиск минимального элемента F(n,n)} if F[u,j]<miF then begin miF:=F[u,j]; miX1:=k1[u];miX2:=k2[j]; end; end; end; end; {ПРОГРАММА} begin clrscr; xp1:=1.2; xp2:=-1.8; xk1:=2.3; xk2:=0.1; tp:=-5; tk:=4; dt:=0.5; t:=tp; {---------формирование массивов х1 и х2-----------} form(x1,xp1,xk1); form(x2,xp2,xk2); {-------------------------------------------------} writeln; writeln(' Начало таблицы'); Writeln(' |-----|---------|--------|--------|------------|----------|'); Writeln(' | i | T | Z | minF | X1min | X2min |'); Write(' |-----|---------|--------|--------|------------|----------|') ; {цикл по времени } for i:=1 to 19 do begin {обращение к подпрограмме-функции а(t)} Z[i]:=a(t);writeln; for u:=1 to 10 do begin for j:=1 to 10 do begin F[u,j]:=b(x1[u],z[i],x2[j]); end; end; {определение минимума двумерного массива F(10,10) и соответствующих значений x1 и x2} miF(F,X1,X2,minF,minX1,minX2); minY[i]:=minF; if i=10 then begin readln; writeln(' Конец таблицы'); end; if ((i>=1)and(i<9)) then begin writeln(' | ',i:2,' | ',T:2:2,' |',z[i]:6:3,' |',minF:1:1,' |' ,minX1:2:0,' | ',minX2:4:2,' |'); write(' |-----|---------|--------|--------|------------|----------|'); end; if i=9 then begin writeln(' | ',i:2,' | ',T:2:2,' |',z[i]:6:3,' |',minF:1:1,' |',minX1:2:2,' | ',minX2:4:2,' |'); write(' |-----|---------|--------|--------|------------|----------|'); end; if i=10 then begin writeln(' |-----|---------|--------|--------|------------|----------|'); writeln(' | ',i:2,' | ',T:2:2,' |',z[i]:6:4,' | ',minF:1:1,' |',minX1:2:2,' | ',minX2:4:2,' |'); write(' |-----|---------|--------|--------|------------|----------|'); end; if ((i>=11)and(i<20)) then begin writeln(' | ',i:2,' | ',T:2:2,' |',z[i]:6:2,' | ',minF:8:3,' |',minX1:4:2,' | ',minX2:4:2,' |'); write(' |----|-------|----------|----------|-------|--------|'); end; if i=19 then begin writeln(' | ',i:2,' | ',T:2:2,' |',z[i]:6:2,' | ',minF:8:3,' |',minX1:4:2,' | ',minX2:4:2,' |'); write(' |----|--------|-----------|----------|-----|--------------|'); end; t:=t+dt; end; Writeln;Writeln;Writeln;Writeln;Wri teln; readln;end. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Разбей формулу на несколько и по бреакпоинтам отследи ошибку.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 23.04.2010
Сообщений: 52
|
![]()
это как?там просто ,наверное одна подпрограмма при переборе элементов принимает значение 0,а в следующей подпрограмме этот 0 вылазит боком((
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Это просто. У тебя большая формула. Разбей ее на несколько простых. Бреакпоинтами пользовался когда-нибудь? И еще: у тебя функция называется b и ее входящий параметр b:
Код:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 28.05.2010 в 09:09. |
![]() |
![]() |
![]() |
#5 | |
Пользователь
Регистрация: 23.04.2010
Сообщений: 52
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Ну так воспользуйся
![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 23.04.2010
Сообщений: 52
|
![]() |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 23.04.2010
Сообщений: 52
|
![]()
на паскале abc пишет диление на 0,а в 7-м ошибка 207- Invalid floating point operation (Недопустимая операция с плавающей запятой) .
|
![]() |
![]() |
![]() |
#9 |
Владимир М.
Участник клуба
Регистрация: 30.10.2006
Сообщений: 1,289
|
![]()
1) Причина в ln(a) - нельзя вычислить при a близком к 0 .
2) Также следует проверять sqrt(a) .. только ошибка другая будет, наверное.
Берегите друг друга!
Последний раз редактировалось Virtson; 28.05.2010 в 16:49. |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 23.04.2010
Сообщений: 52
|
![]()
нет,я через экспоненту и ln задал 4-й степень это так,но ошибка не в этом.я пробывал задать exp(4*ln(a)) как sqr(sqr(a)) и это проблему не устранило((((
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как нужно изменить код, что бы отображение картинок было корректным? | Garret13 | Помощь студентам | 0 | 10.05.2010 19:05 |
Программа с классом и объектами (Что в программе нужно изменить?) | wepoTWR | Помощь студентам | 0 | 17.11.2009 19:26 |
Что изменить в коде? | lider24816 | Помощь студентам | 1 | 30.05.2009 09:58 |
что тут нужно изменить? | asd48 | Общие вопросы C/C++ | 2 | 08.04.2009 21:47 |
Что нужно изменить, чтоб запрос заработал? | Paul Hindenburg | PHP | 1 | 08.10.2008 09:45 |